链表倒置函数:
list *ReverseList(list *phead) {
list *p, *q, *r;
p = phead->next;
q = r = NULL;
while(p) {
q = p->next;
p->next = r;
r = p;
p = q;
}
return r;
}
全部代码:
#include<stdio.h>
#include<stdlib.h>
typedef struct linkedlist {
int a;
struct linkedlist *next;
} list;
list *ReverseList(list *phead) {
list *p, *q, *r;
p = phead->next;
q = r = NULL;
while(p) {
q = p->next;
p->next = r;
r = p;
p = q;
}
return r;
}
int main() {
int i, j;
list *head = (list*)malloc(sizeof(list)), *p, *q, *r;
q = head;
for(i = 0; i < 10; i++) {
p = (list*)malloc(sizeof(list));
p->a = i;
if(head == NULL) head->next = p;
else q->next = p;
q = p;
}
q->next = NULL;
for(list *t = head->next; t != NULL; t = t->next) {
printf("%d ", t->a);
}
printf("\n");
r = ReverseList(head);
for(list *t = r; t != NULL; t = t->next) {
printf("%d ", t->a);
}
return 0;
}
链表创建,遍历输出及倒置。