DS之链表实现就地逆置
来源:互联网 发布:不良信息网络 编辑:程序博客网 时间:2024/05/01 17:57
链表实现数据元素逆置是一个很常用的实例,在顺序表实现输入数据逆置那篇博客需要额外的一个逆置函数,在主函数中实现逆置还需要调用逆置函数。这一篇就全部用链表的知识来实现就地逆置并且输出逆置后的数据元素。
先要构建一个带头结点的单链表,再来重新定义结点类型,在主函数中实现就地逆置的代码为:
<span style="font-size:18px;">#include <iostream>using namespace std;#include <malloc.h>#include <stdlib.h>typedef int ElemType;typedef struct LNode//定义链表的结点类型{ElemType data;struct LNode *next;}LNode,*LinkList;int main(){LinkList L,q;L=(LinkList)malloc(sizeof(LNode));//申请的头结点L->next=NULL;LinkList p=L;cout<<"请输入链表的10个数据元素:";for(int i=0;i<10;i++){LinkList s=(LinkList)malloc(sizeof(LNode));//申请新的结点cin>>s->data;//输入结点的数据元素p->next=s;p=s;}p->next=NULL;p=L->next;cout<<"链表顺序输出:";while(p)//实现链表的顺序输出{cout<<p->data<<",";p=p->next;}cout<<endl; q=L->next;L->next=NULL;while(q)//实现链表就地逆置{p=q->next;q->next=L->next;L->next=q;q=p;}p=L->next;cout<<"逆置后输出:"; while(p)//就地逆置链表输出{cout<<p->data<<",";p=p->next;}cout<<endl;return 0;}</span>
如果向链表输入的十个数据元素为:0 1 2 3 4 5 6 7 8 9
输出的结果为:
这样的输入感觉挺麻烦的,那么就来用产生随机数的方法来实现输入数据元素,并且把建立的逆置单链表实现独立算法与主函数区别开来。完整的代码为:
<span style="font-size:18px;">#include <iostream>using namespace std;#include <malloc.h>#include <stdlib.h>#include <ctime>typedef int ElemType;typedef struct LNode//定义链表的结点类型{ElemType data;struct LNode *next;}LNode,*LinkList;int main(){srand(time(0));//实现每时每刻的随机种子LinkList L,q;L=(LinkList)malloc(sizeof(LNode));//申请的头结点L->next=NULL;LinkList p=L;for(int i=0;i<10;i++){LinkList s=(LinkList)malloc(sizeof(LNode));//申请新的结点s->data=rand()%100+1;//将产生的10个随机数赋值结点的数据元素p->next=s;p=s;}p->next=NULL;p=L->next;cout<<"链表顺序输出:";while(p)//实现链表的顺序输出{cout<<p->data<<",";p=p->next;}cout<<endl; q=L->next;L->next=NULL;while(q)//实现链表就地逆置{p=q->next;q->next=L->next;L->next=q;q=p;}p=L->next;cout<<"逆置后输出:"; while(p)//就地逆置链表输出{cout<<p->data<<",";p=p->next;}cout<<endl;return 0;}</span>
点击程序运行的两次结果为
1 0
- DS之链表实现就地逆置
- 链表就地逆置
- 链表就地逆置
- 链表就地逆置
- 链表就地逆置
- 链表之带头结点的单链表就地逆置
- 链表的就地逆置
- 单向循环链表就地逆置
- 24. 链表就地逆置
- 链表就地逆置和合并
- DS之顺序表实现输入数据逆置
- 线性表的就地逆置(数组实现+链表实现)
- 线性表---就地逆置
- 实现单链表的就地逆置算法
- 对单链表实现就地逆置
- 实现单链表的就地逆置
- 实验二、3链表的就地逆置
- 24.链表操作,单链表就地逆置
- try块和异常处理
- OpenCV学习笔记(4):膨胀,腐蚀,开闭操作(argc,argv)
- 01背包经典
- 使用memcache存储session数据
- 黑马程序员IOS基础---C语言学习之typedef
- DS之链表实现就地逆置
- memcache的另一种扩展libmemcached的安装
- OpenCV2 直方图均衡化
- memcacheq的安装与配置
- 一旦手把手教你开发微信公众平台
- SQLite安卓数据库使用
- POJ_1564 Sum It Up(DFS)
- [leetcode][hash] Two Sum
- Ubuntu下搭建svn服务器(Subversion)