带头结点的单链表的逆置
![](/assets/blank.gif)
![](/assets/blank.gif)
#include<iostream>
using namespace std;
struct Node{
int data;
Node* next;
};
void print(Node* list) //遍历带头结点的单链表
{
Node* t=list->next;
while(t!=NULL){
cout<<t->data<<", ";
t=t->next;
}
}
void create(Node* &l,int data[],int n) //创建带头结点的单链表l=(data[0],data[1],...,data[n-1])
{
l=new Node;
l->next=NULL;
Node* tail=l;
Node *t;
for(int k=1;k<=n;k++){
t=new Node;
t->data=data[k-1];
t->next=NULL;
tail->next=t;
tail=t;
}
}
/*逆置算法1
void ReverseLinkList2 (Node* &L ) {
// L是带头结点的单链表的头指针;p、q、r是三个辅助指针
//在扫描链表的过程中进行逆置操作
Node* p,*q,*r;
if (!L->next ) return; //空表
p=L->next; q=p->next; //原表中,*p为*q的前驱
p->next=NULL; //a1的next置空指针,剥离头结点
while (q) { r=q->next ; //修改q->next之前,保存q->next到r
q->next=p ; //逆置表中,*q为*p的前驱
p=q ; q=r ; //参与扫描的指针都需后移
}
L->next=p;
} //ReverseLinkList2
*/
void ReverseList(Node* &l)
{
Node *p,*q,*r;
p=l->next->next;q=p->next;
if(p==NULL) return;//有一个元素时,直接返回
r=l->next;
r->next =NULL;
while(p->next!=NULL){ //每次将未逆置的链表中的首结点*p,挂在部分逆置好的链表首结点*r之前,
//在改变p->next之前,将p的后继结点存储在q之中
p->next=r;
r=p;
p=q;q=p->next;
}
p->next=r; //最后一结点的处理
l->next=p;
}
int main()
{
Node* mylist;
int a[]={1,2,3,4,5,6,7,8,9,10};
int size=sizeof(a)/sizeof(int);
create(mylist,a,size);
print(mylist);
cout<<endl;
ReverseList(mylist);
print(mylist);
return 0;
}
转载于:https://www.cnblogs.com/loveyougkp/archive/2010/09/08/1821340.html
带头结点的单链表的逆置相关推荐
- 6-1 带头结点的单链表就地逆置 (10 分)
6-1 带头结点的单链表就地逆置 (10 分) 本题要求编写函数实现带头结点的单链线性表的就地逆置操作函数.L是一个带头结点的单链表,函数ListReverse_L(LinkList &L)要 ...
- python实现带头结点的单链表的就地逆置_6-1 带头结点的单链表就地逆置 (10 分)...
本题要求编写函数实现带头结点的单链线性表的就地逆置操作函数.L是一个带头结点的单链表,函数ListReverse_L(LinkList &L)要求在不新开辟节点的前提下将单链表中的元素进行逆置 ...
- python实现带头结点的单链表的就地逆置_带头结点的单链表就地逆置
本题要求编写函数实现带头结点的单链线性表的就地逆置操作函数.L是一个带头结点的单链表,函数ListReverse_L(LinkList &L)要求在不新开辟节点的前提下将单链表中的元素进行逆置 ...
- 带头结点的单链表就地逆置
本题要求编写函数实现带头结点的单链线性表的就地逆置操作函数.L是一个带头结点的单链表,函数ListReverse_L(LinkList &L)要求在不新开辟节点的前提下将单链表中的元素进行逆置 ...
- 数据结构学习-带头结点的单链表就地逆置
所谓"就地是指辅助空间复杂度为O(1). 解法一:将头结点摘下,然后从第一结点开始,依次前插入到头结点的后面(头插法),直到最后一个结点为止. 代码如下 LinkList Reverse ( ...
- 无头结点单链表的逆置_第1章第2节练习题11 就地逆置单链表
## 问题描述 > 试编写在带头结点的单链表就地逆置,所谓"就地"是指辅助空间为O(1) ## 算法思想1 > 将头结点摘下,然后从第一个结点开始,依次插入到头节点的后 ...
- java实现单链表就地逆置,单链表的就地逆置讲解
{ List *q; List *p = L->next; L -> next = NULL; //单链表就地逆置 while (p != NULL) { q = p -> next ...
- 实现带头结点的单链表元素就地逆置
每日数据结构基础题2-1 题目:试编写在带头结点的单链表L中对链表的元素进行逆置(所谓就地是指辅助空间复杂度为O(1)) 方法一 完整代码如下: 方法二 完整代码如下: 题目:试编写在带头结点的单链表 ...
- C语言实现不带头结点的单链表逆置的三种方法
C语言实现不带头结点的单链表逆置的三种方法 直接循环 头插法 递归法 END! 直接循环 图片解释 ListNode* ReverseList1(ListNode *head) {if(head == ...
最新文章
- 解决Word 2007启动时弹出“无法访问您试图使用功能所在的网络位置”的问题...
- linux服务器密码策略,windows与linux服务器平台密码策略管理
- 一个指针的引用引发的血案
- 能熟练掌握和应用计算机基础知识,浙江省大学生计算机基础知识与应用能力等级考试二级(V......
- 服务器打不QQ显示00001,QQ登录超时00001怎么处理?
- Win11系统获取管理员权限的方法
- 发卡网源码 去后门 可以扩展码支付
- java 去掉 t_[Java教程]LocalDateTime去掉T
- (原创)c#学习笔记03--变量和表达式03--变量01--简单类型
- [健康]生病了绝对不能吃的东西
- notes for 电子技术技术(模拟部分) 康华光
- 移动网流量用户身份识别系统的源代码_真武庙车辆识别系统安装效果图
- 使用css样式设计一个简单的html登陆界面
- 月薪3k能买到什么样的房子,看到结果后,我裂开了。。。
- cd linux给u盘安装程序,CDLINUX U盘安装教程
- springboot+vue校园食堂网上订餐系统-带商家idea
- 开发脚手架与自动化构建
- 史上最全的CDN内容分发网络实战技巧
- 究竟什么是图数据库,它有哪些应用场景?
- 2021年武威铁路中学高考的成绩查询,武威铁路中学统筹推进2020-2021学年第二学期开学工作纪实...