您的位置:首页 > 其它

单链表的逆置

2015-10-11 17:10 260 查看
1,算法描述:实现带头结点的单链表的逆置。

      代码如下:

   #include<stdio.h>
#include <malloc.h>
typedef struct LNode
{
int data;
LNode *next;
}LNode,*LinkList;

//creat a LinkList
bool creatLinklist(LinkList&L,int n)
{
LinkList p,q,t,s;
L=(LNode*)malloc(n*sizeof(LNode));
if(!L)
return false;
q=L;
for(int i=1;i<=n;i++)
{
p=(LNode*)malloc(sizeof(LNode));
scanf("%d",&p->data);
L->next=p;
L=p;
}
p->next=NULL;
L=q;
return true;
}
bool inversLinkList(LinkList&L)
{
LinkList p,q,t;
p=L->next;//The first Node
q=p->next;//The second Node
p->next=NULL;
while(q)
{
t=q->next;// keep the third Node
q->next=p;// the second Node points to the first Node in a loop
p=q; //p points to next Node
q=t; //q points to next Node
}
L->next=p; //set head Node
return true;
}

void main()
{
LinkList Llist,p;
int k;
int elemet;
int position;
printf("input the number of LinkList to be created:");
scanf("%d",&k);
creatLinklist(Llist,k);
printf("\n");
inversLinkList(Llist);
printf("output the new LinkList:\n");
p=Llist->next;
while(p)
{
printf("%d ",p->data);
p=p->next;
}
printf("\n");
free(Llist);
}运行结果如下:

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