数据结构基础--单链表逆序
2017-09-17 16:30
183 查看
最近同学问了一道在数据结构的课本上的题,做了很久才做出来,可见课本和基础是很重要的
题目是将一个单链表逆序但是不允许申请额外的空间做中转
思路大抵为:
初始状态:定义三个node *prev,node *head,node *next; prev指向NULL,head指向链表的头结点A,next指向第一个结点B,将head->next指向prev即NULL,prev=head,head=next,next=head->next,经过以上变化可以将图一化成图二:
从图1到图2的代码如下:
head->next=prev;
prev=head;
head=next;
next=head->next;
这时重复上面的步骤,就可以将图2转化为图3:
然后继续重复,直到:
即head->next==NULL;为终止条件;
代码如下:
typedef struct{
typename data;
node *next;
}node;
node* List_Reverse(node *L)
{
node *head=L;
node *prev=NULL;
node *next;
while(head->next!=NULL)
{
next=head->next;
head->next=prev;
prev=head;
head=next;
}
return prev;
}
题目是将一个单链表逆序但是不允许申请额外的空间做中转
思路大抵为:
初始状态:定义三个node *prev,node *head,node *next; prev指向NULL,head指向链表的头结点A,next指向第一个结点B,将head->next指向prev即NULL,prev=head,head=next,next=head->next,经过以上变化可以将图一化成图二:
从图1到图2的代码如下:
head->next=prev;
prev=head;
head=next;
next=head->next;
这时重复上面的步骤,就可以将图2转化为图3:
然后继续重复,直到:
即head->next==NULL;为终止条件;
代码如下:
typedef struct{
typename data;
node *next;
}node;
node* List_Reverse(node *L)
{
node *head=L;
node *prev=NULL;
node *next;
while(head->next!=NULL)
{
next=head->next;
head->next=prev;
prev=head;
head=next;
}
return prev;
}
相关文章推荐
- (杂)百度实习的一道题链表逆序,合并两个有序链表
- 链表的建立、输出、逆序
- 删除链表中的重复节点、剩余节点逆序输出
- 链表逆序问题
- 链表的设计--单链表逆序开始
- 链表的k值逆序
- 数据结构实验之链表二:逆序建立链表
- 数据结构实验之链表二:逆序建立链表
- 逆序建链表
- reverse list链表逆序
- 链表逆序
- 关于链表的逆序输出
- 单链表中一些经典的问题-->约瑟夫环,链表逆序,查找链表结点...(上)
- python实现链表逆序(反转函数)
- 【数据结构_链表_List_0957】逆序输出链表
- 链表逆序的笔试题
- 链表的创建、取长、输出、插入、删除、逆序
- 数据结构实验之链表二:逆序建立链表
- [链表常用技巧]链表逆序+链表中点
- 利用链表的头插法,将链表逆序