--逆序创建链表及链表反转

Posted Love63

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了--逆序创建链表及链表反转相关的知识,希望对你有一定的参考价值。

 1 #include <iostream>
 2 using namespace std;
 3 typedef struct LNode 
 4 {
 5     int data;
 6     LNode *next;
 7 }LNode,*LinkList;
 8 //逆位序输入n个元素的值,建立带头结点的单链线性表
 9 LinkList createLinklist(LinkList &L)
10 {
11     L = (LinkList)malloc(sizeof(LNode));
12     L->next = NULL;//建立头结点
13     for (int i = 0; i <= 10;i++) {
14         LinkList p = (LinkList)malloc(sizeof(LNode));
15         p->data = i;
16         p->next = L->next;
17         L->next = p;
18     }
19     return L;
20 }
21 //链表反转
22 LinkList listReversal(LinkList &L)
23 {
24     LinkList preNode=NULL; //前一个节点
25     LinkList node = L->next;     //后一个节点
26     LinkList nextNode = NULL;//中间节点
27     while (node!=NULL) {
28         nextNode = node->next;  //保存下一个节点的值
29         node->next = preNode;    //把当前节点的下一个节点指向preNode;
30         preNode = node;            //将preNode向后移动指向此时的node
31         node = nextNode;        //将node向后移动指向nextNode
32     }
33     L->next = preNode;
34     return L;
35 }
36 int main()
37 {
38     LinkList linkList;
39     LinkList L=createLinklist(linkList);
40     LinkList LL=listReversal(L);
41     LL = LL->next;
42     while (LL) {
43         cout << LL->data << " ";
44         LL = LL->next;
45     }
46     cout << endl;
47     return 0;
48 }

 

以上是关于--逆序创建链表及链表反转的主要内容,如果未能解决你的问题,请参考以下文章

206. 反转链表及扩展

链表逆序2

反转链表

链表补充及链表和数组的区别

C语言链表的使用及链表的实现原理

C语言链表的使用及链表的实现原理