首页 > 代码库 > (7)--逆序创建链表及链表反转

(7)--逆序创建链表及链表反转

 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 =http://www.mamicode.com/ 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向后移动指向此时的node31         node = nextNode;        //将node向后移动指向nextNode32     }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 }

 

(7)--逆序创建链表及链表反转