单链表逆置

来源:百度知道 编辑:UC知道 时间:2024/06/09 13:35:50
数据结构的单链表逆置,请告诉我思路是怎么样的?
是不是不要创新的结点?
2楼的可以直接改指针吧,不一定要创新结点吧。

带头接点的单链表倒置思路:
(要求: 新的连表的结点不是新建的,都是原链表的结点.不需新结点!当然辅助结点是需要的.)

(可结合后面的我自己编写的代码理解,会容易一点!)

void DaozhiList(LinkedList *L)
{
结点指针oldfirst指向原链表剩余部分第一结点(非表头,开始时为原链表)
当(while)原链表剩余部分第一结点不为空(即剩余部分不是空的)
{
当前指针now指向原链表剩余部分第一结点oldfirst使之成为当前结点
原链表剩余部分第一结点指针oldfirst下移
使新链表的第一个结点newfirst成为当前指针now的下一结点
使当前指针now转化为新链表的第一个结点newfirst
}
使新链表的第一个结点newfirst成为L的头指针的下一结点
}

下面为参考的带头结点的单链表倒置函数实现:

void DaozhiList(LinkedList *L)
{
ListNode *newfirst=NULL,*now,*oldfirst;//辅助结点
oldfirst=L.Head->next; //原链表剩余部分第一结点(非表头)
while(oldfirst!=NULL) //原链表剩余部分第一结点不为空
{
now=oldfirst; //原链表剩余部分第一结点为当前结点
oldfirst=oldfirst->next; //原链表剩余部分第一结点下移
now->next=newfirst; //当前指针指向新链表的第一个结点
newfirst=now;//当前指针成为新链表的第一个结点
}
L.Head->next=newfirst;
}

其中,Linkedlist可用于定义指针,结点,链表