109 *
110 *功能:对链表倒置
111 *传入参数:链表的首节点
112 *
113 *************************************************************************************/
114 void revList(NODE* pHead)
115 {
116 if (NULL==pHead) { /*如果还没有创建链表,直接退出*/
117 DEBUG("in revList, pHead is NULL\n");
118 exit(-1);
119 }
120
121 if (NULL==pHead->next|| NULL==pHead->next->next) /*链表为空,或只有一个元素,直接
返回*/
122 {
123 return ;
124 }
125
126 NODE* pData=pHead->next; /*借助3个指针变量,遍历并倒置链表*/
127 NODE* pDataNext=pData->next;
128 NODE* pEnd=pDataNext->next;
129 pData->next=NULL;
130 do
131 {
132 pDataNext->next=pData;
133 pData=pDataNext;
134 pDataNext=pEnd;
135 if(pEnd!=NULL)
136 {
137 pEnd=pEnd->next;
138 }
139 }while(pDataNext!=NULL);
140
141 pHead->next=pData; /*链表首元素(无数据)的指针执行倒置前链表的最后一个元素*/
142
143 DEBUG("revList success!\n");
144 }
没有评论:
发表评论