链表倒置

来源:互联网 发布:黑米抢购软件 编辑:程序博客网 时间:2024/06/01 23:22

链表倒置函数:

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;}

链表创建,遍历输出及倒置。

原创粉丝点击