题目描述:输入多个整数,以-1作为结束标志,顺序建立一个带头结点的单链表,之后对该单链表的数据进行逆置,并输出逆置后的单链表数据。
#include<stdio.h>
#include<stdlib.h>
typedef struct LNode
{
int data;
struct LNode *next;
}LNode, *LinkList;
void CreateList(LinkList &L)
{
L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;
LinkList p, q;
q = L;
for(int i = 0; ; i ++)
{
p = (LinkList)malloc(sizeof(LNode));
scanf("%d", &p->data);
p->next = NULL;
q->next = p;
q = p;
}
p = L->next;
q = p->next;
L->next = NULL;
while(p)//逆置,相当于一次头插法
{
p->next = L->next;
L->next = p;
//更新p
p = q;
if(q)
q = q->next;
}
p = L->next;
while(p)
{
if(p->next)
printf("%d ", p->data);
else
printf("%d\n", p->data);
p = p->next;
}
}
int main()
{
LinkList L;
CreateList(L);
return 0;
}