运行环境
操作系统:Win10
编辑器:Dev-C++5.11
程序文件
reverse.c
#include <stdio.h>
#include <stdlib.h>
typedef struct List {
int data;
struct List *next;
} List;
// 表的初始化,不带头结点
List* InitP() {
List *node = NULL;
int i;
for (i=5; i>0; i--) {
List *newnode = (List *)malloc(sizeof(List));
newnode->data = i;
newnode->next = node;
node = newnode;
}
return node;
}
// 打印输出
void print(List *L) {
while (L != NULL) {
printf("%d ", L->data);
L = L->next;
}
printf("\n");
}
// 单链表反转(就地逆置)
List* reverse(List *L) {
List *p = L->next, *temp;
L->next = NULL;
while (p != NULL) {
temp = p;
p = p->next;
temp->next = L;
L = temp;
}
return L;
}
void main() {
printf("初始化 链表的数据: ");
List *p = InitP();
print(p);
printf("反转后 链表的数据: ");
List *list = reverse(p);
print(list);
}
运行结果
初始化 链表的数据: 1 2 3 4 5
反转后 链表的数据: 5 4 3 2 1