代码

//带头结点的单链表逆置.cpp

#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

带头结点的单链表的逆置相关推荐

  1. 6-1 带头结点的单链表就地逆置 (10 分)

    6-1 带头结点的单链表就地逆置 (10 分) 本题要求编写函数实现带头结点的单链线性表的就地逆置操作函数.L是一个带头结点的单链表,函数ListReverse_L(LinkList &L)要 ...

  2. python实现带头结点的单链表的就地逆置_6-1 带头结点的单链表就地逆置 (10 分)...

    本题要求编写函数实现带头结点的单链线性表的就地逆置操作函数.L是一个带头结点的单链表,函数ListReverse_L(LinkList &L)要求在不新开辟节点的前提下将单链表中的元素进行逆置 ...

  3. python实现带头结点的单链表的就地逆置_带头结点的单链表就地逆置

    本题要求编写函数实现带头结点的单链线性表的就地逆置操作函数.L是一个带头结点的单链表,函数ListReverse_L(LinkList &L)要求在不新开辟节点的前提下将单链表中的元素进行逆置 ...

  4. 带头结点的单链表就地逆置

    本题要求编写函数实现带头结点的单链线性表的就地逆置操作函数.L是一个带头结点的单链表,函数ListReverse_L(LinkList &L)要求在不新开辟节点的前提下将单链表中的元素进行逆置 ...

  5. 数据结构学习-带头结点的单链表就地逆置

    所谓"就地是指辅助空间复杂度为O(1). 解法一:将头结点摘下,然后从第一结点开始,依次前插入到头结点的后面(头插法),直到最后一个结点为止. 代码如下 LinkList Reverse ( ...

  6. 无头结点单链表的逆置_第1章第2节练习题11 就地逆置单链表

    ## 问题描述 > 试编写在带头结点的单链表就地逆置,所谓"就地"是指辅助空间为O(1) ## 算法思想1 > 将头结点摘下,然后从第一个结点开始,依次插入到头节点的后 ...

  7. java实现单链表就地逆置,单链表的就地逆置讲解

    { List *q; List *p = L->next; L -> next = NULL; //单链表就地逆置 while (p != NULL) { q = p -> next ...

  8. 实现带头结点的单链表元素就地逆置

    每日数据结构基础题2-1 题目:试编写在带头结点的单链表L中对链表的元素进行逆置(所谓就地是指辅助空间复杂度为O(1)) 方法一 完整代码如下: 方法二 完整代码如下: 题目:试编写在带头结点的单链表 ...

  9. C语言实现不带头结点的单链表逆置的三种方法

    C语言实现不带头结点的单链表逆置的三种方法 直接循环 头插法 递归法 END! 直接循环 图片解释 ListNode* ReverseList1(ListNode *head) {if(head == ...

最新文章

  1. 解决Word 2007启动时弹出“无法访问您试图使用功能所在的网络位置”的问题...
  2. linux服务器密码策略,windows与linux服务器平台密码策略管理
  3. 一个指针的引用引发的血案
  4. 能熟练掌握和应用计算机基础知识,浙江省大学生计算机基础知识与应用能力等级考试二级(V......
  5. 服务器打不QQ显示00001,QQ登录超时00001怎么处理?
  6. Win11系统获取管理员权限的方法
  7. 发卡网源码 去后门 可以扩展码支付
  8. java 去掉 t_[Java教程]LocalDateTime去掉T
  9. (原创)c#学习笔记03--变量和表达式03--变量01--简单类型
  10. [健康]生病了绝对不能吃的东西
  11. notes for 电子技术技术(模拟部分) 康华光
  12. 移动网流量用户身份识别系统的源代码_真武庙车辆识别系统安装效果图
  13. 使用css样式设计一个简单的html登陆界面
  14. 月薪3k能买到什么样的房子,看到结果后,我裂开了。。。
  15. cd linux给u盘安装程序,CDLINUX U盘安装教程
  16. springboot+vue校园食堂网上订餐系统-带商家idea
  17. 开发脚手架与自动化构建
  18. 史上最全的CDN内容分发网络实战技巧
  19. 究竟什么是图数据库,它有哪些应用场景?
  20. 2021年武威铁路中学高考的成绩查询,武威铁路中学统筹推进2020-2021学年第二学期开学工作纪实...

热门文章

  1. r 字符串转化为数值_Lua 字符串处理
  2. iPhone清理喇叭灰尘_手机喇叭孔灰尘清理
  3. 修改mysql+io算法_MySQL磁盘IO设置问题
  4. 命令模式 java_JAVA中的命令模式实例教程
  5. vs移植的.exe再编译无法更新_关于freetype的移植和其官方demos的使用总结
  6. 通过apt自动生成建造者模式单线程版代码(一)
  7. syslog介绍-CS架构来采集系统日志
  8. mysql 根据字段映射
  9. 对计算属性中get和set的理解
  10. CDH- 集群时间同步ntp问题解决