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 }
时间: 2024-10-11 01:31:04