代码

//带头结点的单链表逆置.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. 生产环境碰到系统CPU飙高和频繁GC,你要怎么排查?
  2. 禄露禄露碌脛脥炉脛锚,学者批时下宫廷戏“就是一堆文化垃圾”
  3. RDC如何打造支撑百万用户的分布式代码托管平台
  4. JavaSE(十六)——反射
  5. 《风暴英雄》里那些超棒的游戏设计
  6. 金蝶k3rpc服务器不可用_金蝶KIS商贸版常见问题这样解决
  7. wireshark windows版数据过滤插件安装及使用
  8. 巨头切入,或将改变云客服市场
  9. Nginx(6)-配置基于域名的虚拟主机
  10. shell中的局部变量与全局变量
  11. 萤火虫算法_萤火虫算法(一)
  12. 微信小程序实现人脸识别认证
  13. 使用ps 批处理图片(gif 转 png)
  14. SpringBoot 使用异常自定义错误码
  15. android app整包更新,uniapp热更新和整包更新
  16. 算法分析与设计实验报告——图的m着色问题
  17. [数独进阶技巧]区块摒除法
  18. mysql免安装版linux_Linux下配置免安装版的MySQL
  19. 天梯赛 L1-054 福到了 (15 分) C++
  20. 乐视:基于Docker的RDS,我们是这样做的

热门文章

  1. 网站建设不曾止步,持续优化才有未来!
  2. 网站在改版时如何降低对排名的影响呢?
  3. android 模拟器配置上网_10 款主机模拟器,让你畅玩全球大作,嗨到飞起
  4. Jupyter 快速入门——写python项目博客非常有用!!!
  5. DNS隧道工具使用 不过其网络传输速度限制较大
  6. 如何判断字符串所用何种加密编码
  7. excel 用VBA将所有单元格内容全部转换为文本
  8. 记录ie暂时遇到的问题
  9. 超大 Cookie 拒绝服务攻击
  10. jQuery 遍历后代