首先创建带有头结点的单链表,输入999时,结束
//链表倒置
#include <stdio.h>
#include <malloc.h>
typedef struct LNode {
LNode * Next;
int data;
} LNode,* linkList;
//头插法创建链表,输入999时结束,先输入的数据出现在后面
linkList createList(linkList & L) {
LNode * s;
int x;
L = (linkList)malloc(sizeof(LNode));
L->Next = NULL;
scanf("%d", &x);
while (x != 999) { //输入999表示结束
s = (LNode *)malloc(sizeof(LNode));
s->data = x;
s->Next = L->Next;
L->Next = s;
scanf("%d", &x);
}
return L;
}
//类似头插法,进行链表倒置
linkList Reverse(linkList & L) {
LNode * s = L->Next;
L->Next = NULL;
LNode * r=s;
while( r != NULL) {
r = s->Next;
s->Next = L->Next;
L->Next = s;
s = r;
}
return L;
}
int main() {
linkList l = (linkList)malloc(sizeof(LNode));
l = createList(l);
for (LNode* p = l; p->Next != NULL; p = p->Next) {
printf("%d ", p->Next->data);
}
printf("\n");
Reverse(l);
for (LNode* p = l; p->Next != NULL; p = p->Next) {
printf("%d ", p->Next->data);
}
return 0;
}
运行结果如图: