好久没写C的数据结构啦,来复习一下 , 画图来解释比语言简单多了
第一种解法是原地逆转
List Reverse( List L )
{
List temp,tail;
temp=tail=NULL;
while(L)
{
tail=L;
L=L->Next;//防止丢失
tail->Next=temp;
temp=tail;//防止最后一个结点丢失
}
return temp;//tail
}
第二种插入法
如图所示,每一步的顺序真的很重要,因为下一个结点如果不保存就修改这个结点的指针会丢失下一个结点,
空链表这种特殊情况一定要单独考虑,
想学好链表一定要自己动手从空白来一遍
利用动态分配内存来添加头指针(无数据)
//插入法转置
List Reverse( List L )
{
//建立头结点
List head,temp;
head=(List)malloc(sizeof(struct Node));
head->Next=L;
if(L==NULL)
return NULL;//空链表
temp=L->Next;
while(temp)
{
L->Next=temp->Next;
temp->Next=head->Next;
head->Next=temp;
temp=L->Next;
}
return head->Next;
}