#include "stdio.h"
#include "stdlib.h"
typedef int ElemType;
typedef struct node
{
ElemType data;
struct node *next;
}Node,*LinkList;
LinkList createFromTail();
void printLinkList(LinkList L);
void reverseLinkList(LinkList L);
int main()
{
LinkList L;
L=createFromTail();
printf("\nAfter create,the list is:\n");
printLinkList(L);
reverseLinkList(L);
printf("\nAfter Reverse,the list is:\n");
printLinkList(L);
return 1;
}
//用尾插法建立一个带头结点的单链表
LinkList createFromTail()
{
LinkList L;
Node *r, *s;
int flag =1;
int d;
L=(Node * )malloc(sizeof(Node));
//该结点为头结点
L->next=NULL;
r=L;
printf("Input int one by one,-1 to end:\n");
while(flag)
{
scanf("%d",&d);
if(c!=-1)
{
s=(Node*)malloc(sizeof(Node));
s->data=c;
r->next=s;
r=s;
}
else
{
flag=0;
r->next=NULL;
}
}
return L;
}
void printLinkList(LinkList L)
{
Node *p;
p=L->next;
while(p!=NULL)
{
printf("%d ",p->data);
p=p->next;
}
}
void reverseLinkList(LinkList L)
{
Node *p=L->next,*q;
/* P为原链表的当前处理结点*/
L->next=NULL;
while(p!=NULL)
{ q=p->next;
p->next=L->next;
L->next=p;
p=q;
}
}
耿国华数据结构(C语言)【单链表逆置】
最新推荐文章于 2024-09-07 14:37:21 发布