typedef int data;
typedef struct _Node{
data
elem;
_Node
*next;
}Node,*pNode;
/*
*传入单向链表的第一个节点的二级指针
*该函数执行后将更新该二级指针P指向倒转
*后链表的启示指针
*/
int inversion_list(pNode *p)
{
int result=0;
/*空链表*/
if(!p || !(*p))
result = -1;
/*保存当前节点及下个节点*/
pNode pCTemp = *p;
pNode pNTemp = (*p)->next;
/*第一个节点将成为最后一个节点*/
(*p)->next = NULL;
/*依次进行倒转处理*/
while(pNTemp)
{
pNode pNNTemp = pNTemp->next;
/*倒转当前处理的相邻节点*/
pNTemp->next = pCTemp;
/*更新下次倒转处理的节点信息*/
pCTemp = pNTemp;
pNTemp = pNNTemp;
}
/*返回新的首节点*/
*p = pCTemp;
return result;
}
[
本帖最后由 mango62 于 2009-8-22 20:19 编辑 ]