头插法实现链表倒置

来源:互联网 发布:数据资源管理平台 编辑:程序博客网 时间:2024/06/16 09:52

首先创建带有头结点的单链表,输入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;}

运行结果如图:
运行结果

原创粉丝点击