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;     //后一个节点(L为头结点)
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   //中间位置反转
37 LinkList middlePositionInversion(LinkList &L)
38 {
39     LinkList Lhead=L->next;
40     int num = 0;
41     while (Lhead) {//就算链表的长度
42         num++;
43         Lhead = Lhead->next;
44     }
45     LinkList curNode = L->next;
46     int i = 1;
47     while (i<num/2+1) {//寻找要反转后的前一个节点的指针(退出循环后,第i个元素的指针为curNode)
48         i++;
49         curNode = curNode->next;
50     }
51     LinkList preNode=NULL;
52     LinkList node=curNode->next;
53     LinkList nextNode=NULL;
54     while(node!=NULL){
55         nextNode = node->next;
56         node->next = preNode;
57         preNode = node;
58         node = nextNode;
59     }
60     curNode->next = preNode;
61     return L;
62 }
63 int main()
64 {
65     LinkList linkList;
66     LinkList L=createLinklist(linkList);
67     //LinkList LL=listReversal(L);
68     LinkList LL = middlePositionInversion(L);
69     LL = LL->next;
70     while (LL) {
71         cout << LL->data << " ";
72         LL = LL->next;
73     }
74     cout << endl;
75     return 0;
76 }

 

posted on 2016-09-01 11:09  Love63  阅读(269)  评论(0编辑  收藏  举报