您的位置:首页 > 其它

将一个链表逆序

2014-07-03 20:38 162 查看
面试题:

实现一个链表逆序,加入输入A->B->C->D->E  输出为E->D->C->B->A  自己定义链表:

 思路:

A->B->C->D->E 每次移动一个元素;

B->A->C->D->E

C->B->A->D->E

D->C->B->A-->E

E->D->C->B->A

第一步:建立链表: 第二步:逆转函数

<pre name="code" class="cpp">#include <stdio.h>
#include <stdlib.h>

#define N 10
typedef struct A_S{
int iData;
struct A_S *next;
}A_S;

void LinkInit(A_S * pstLinkNode, int iNum)
{
pstLinkNode->iData = iNum;
pstLinkNode->next = NULL;

return;
}

A_S * CreateNode()
{

A_S *pstLinkNode;

pstLinkNode = (A_S *)malloc(sizeof(A_S));
if(NULL == pstLinkNode)
{
return NULL;
}

return pstLinkNode;
}

void FreeNode(A_S *pstLinkNode)
{
if(NULL == pstLinkNode)
{
return ;
}

free(pstLinkNode);

return;
}

void PrintLink(A_S *pstLinkHead)
{
A_S *pstNodeTemp;
int i;

if(NULL == pstLinkHead)
{
return;
}
pstNodeTemp = pstLinkHead;
while(NULL != pstNodeTemp)
{
printf("%d\r\n", pstNodeTemp->iData );
pstNodeTemp = pstNodeTemp->next;
}
printf("\n");
return;
}

A_S * ReverseLink(A_S *pstLinkHead)
{
A_S *pstReverHead;
A_S *pstLinkTemp;
A_S *pstLinkNext;

if(NULL == pstLinkHead)
{
return ;
}

pstReverHead = pstLinkHead;
pstLinkNext = pstLinkHead->next;

while(NULL != pstLinkHead->next)
{
pstLinkTemp = pstLinkNext->next;
pstLinkNext->next = pstReverHead;
pstLinkHead->next = pstLinkTemp;
pstReverHead = pstLinkNext;
pstLinkNext = pstLinkHead->next;
}

PrintLink(pstReverHead);

return pstReverHead;
}

int main()
{
A_S *pstLinkNode = NULL;
A_S *pstLinkHead = NULL;
A_S *pstLinkTemp = NULL;
int i=0;

pstLinkHead = CreateNode();

if(NULL == pstLinkHead)
{
return 0;
}

LinkInit(pstLinkHead, 0);
pstLinkTemp = pstLinkHead;
for(i=1; i<=N; i++)
{
pstLinkNode = CreateNode();
if(NULL == pstLinkNode)
{
return 0;
}

LinkInit(pstLinkNode, i);
pstLinkTemp->next = pstLinkNode;
pstLinkTemp = pstLinkTemp->next;
}

PrintLink(pstLinkHead);
pstLinkHead = ReverseLink(pstLinkHead);

pstLinkNode = pstLinkHead;
for(i=0; i<N; i++)
{
pstLinkTemp = pstLinkNode->next;
FreeNode(pstLinkNode);
pstLinkNode = pstLinkTemp;
}

return 0;
}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐