




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C+链表操作示例*#29链表创建struct ts *Create()struct ts *head=NULL,*tail=NULL,*newnode;/ 首节点newnode=new ts;strcpy(newnode-name, 张三 );strcpy(newnode-num,);head=newnode;tail=newnode;tail-next=NULL;/ 第二个newnode=new ts;strcpy(newnode-name, 李四 );strcpy(newnode-num,);tail-next =newnode;tail=newnode;tail-next=NULL;re
2、turn head;/ 初始化*#30链表输出/ 显示所有信息void display(ts *head)ts *p=head;if(head=NULL)/链表为空cout 链表为空! endl;return ;cout 链表内容如下: endl;while(p!=NULL)coutnametnum tnext;/display*#31插入节点/ 开头插入节点void add(ts *&head,ts *neod)struct ts *tail=NULL;if(head=NULL)head=neod;tail=neod;tail-next=NULL;elseneod-next =head;he
3、ad=neod;/ 插入节点/ 结尾插入节点void inst(ts *&head,ts *neod)struct ts *tail=NULL,*p=head;if(head=NULL)head=neod;tail=neod;tail-next=NULL;elsewhile(p-next!=NULL)p=p-next;p-next=neod;neod-next=NULL;/ 插入节点*#32链表删除/ 删除功能void del(ts *&head,char c)ts *p=head;/ 首节点if(strcmp(c,p-name)=0)head=p-next;/p=head;/ifelsewh
4、ile(p!=NULL)if(strcmp(c,p-next-name)=0)ts *q;q=p-next;p-next=q-next;break;/ifp=p-next;/while/else;/del/ 删除头结点void delh(ts *&head)if(head=NULL)return;elsehead=head-next;/p=head;/delh/ 删除尾结点void delt(ts *&head)struct ts *tail=NULL,*p=head;if(head=NULL)return;elsewhile(p-next-next!=NULL)p=p-next;p-next
5、=NULL;/delt*#33链表查找/ 查找 by indexstruct ts *serch(ts *head,int r)struct ts *p=head;int j=1;if(r0)cout 编号错误 next;if(r=j&p!=NULL)return p;elsecout 编号错误 endl;return head;/serch*#34数组函数#include #include #include struct testint x;/操作数 1int y;/操作数 2int z;/答案;/ 创建void cre(int a10,int line)/数组,总数,范围上届int i=0
6、,j=0;srand(time(NULL);/时间种子for(i=0;iline;i+)for(j=0;j10;j+)aij =int(rand()%(100-1)+1);/操作数 1/for /crevoid build(int a,int len,int up)/int i=0;数组,总数,范围上届srand(time(NULL);/ for(i=0;ilen;i+) 时间种子ai =int(rand()%(up-1)+1);/操作数1/for /build/ 输出void disp(int a10,int line)for(int i=0;iline;i+)for(int j=0;j10
7、;j+)coutaij , ;coutendl;coutendl;/display/ 输出void display(int a,int count)for(int i=0;icount;i+)coutai , ;coutendl;/display/ 排序 0升1降void maopao(int a,int s,int u_d)int temp;int i,j;for(i=0;is-1;i+)for(j=0;jaj+1)temp=aj;aj=aj+1;aj+1=temp;break;case 1:/降序if(ajaj+1)temp=aj;aj=aj+1;aj+1=temp;break;/swit
8、ch/for1/for2/maopao/ 冒泡排序 - 升void upm(int a,int s)int temp;int i,j;for(i=0;is-1;i+)for(j=0;jaj+1)temp=aj;aj=aj+1;aj+1=temp;/for1/for2/upm/ 冒泡排序 - 降void downm(int a,int s)int temp;int i,j;for(i=0;is-1;i+)for(j=0;js-i-1;j+)if(ajaj+1)temp=aj;aj=aj+1;aj+1=temp;/for1/for2/downm/ 选择排序 - 升void upj(int a,in
9、t s)int k;int i,j,temp;for(i=0;is-1;i+)k=i;for(j=i+1;js;j+)if(ajak)temp=aj;aj=ak;ak=temp;/for1/for2/upj/ 选择排序 - 降void downj(int a,int s)int k;int i,j,temp;for(i=0;is-1;i+)k=i;for(j=i+1;jak)temp=aj;aj=ak;ak=temp;/for1/for2/downj/ 求总和int sum(int a10,int line)int s=0;for(int i=0;iline;i+)for(int j=0;j1
10、0;j+)s+=aij;return s;/sumvoid main()/ int *en;/声明数组指针/en=new int0;/ /int count=20; /int en510; /en=new intcount; /build(en,count,99); /cre(en,5); /disp(en,5); /maopao(en,20,1); /upm(en,20); /downm(en,20); /upj(en,20); /downj(en,20); /coutsum(en,5); /disp(en,count); 动态生成数组*#35链表函数/ 链表#include #includ
11、e #include #include struct tschar name15;char num15;struct ts *next;ts *head;void main()head=Create(); /创建链表display(head);ts *t=new ts;strcpy(t-name,王五 );strcpy(t-num,);add(head,t);display(head);/del(head,王五 );ts *r=new ts;strcpy(r-name,王六 );strcpy(r-num,1);/inst(head,r);add(head,r);display(head);co
12、utnameendl;delh(head);delt(head);*#36动态数组#include#includevectorb;/声明int i,m;for(i=0;i20;i+)(i);for(i=0;i20;i+)coutbi;coutendl;/ m=();/返回容器大小/ m=();/判断是否为空/ ();/删除容器的末元素,并不返回该元素。/ (),()+3);/删除,可意为下标之间,含前/ ()-1);/重置容器大小/ ()+5,22);/插入后下标为 5/ vector:iterator p=()+1; /p指向 v1 的最后一个元素的下一位置。/ m=*p;/ cout()e
13、ndl;for(i=0;i();i+)coutbi;/ coutdata=e)flag=true;break;p=p-next;return flag;*#38函数模版#include #include using namespace std;template class node /节点public:T data; node *next; ;template class listpublic:list();void Create(); /创建链表bool Empty() const; /判断链表是否为空void InsertLast(const T e); /从尾部插入一个元素void In
14、sertFirst(const T e); /从头部插入一个元素void DeleteFirst(); /从头删除一个元素void DeleteLast(); /从尾删除元素void Display() const; /显示链表node* GetNode(int i); /返回第 i 个节点void Reverse(); /链表逆置bool Find(const T e); /在链表中查找某个值list(); /销毁链表private:node *head; /头节点;template list:list()head=new node;head-next=NULL;template void
15、list:Create()node *p,*q;p=head;q=new node;coutq-data)p-next=q;p=q;q=new node;p-next=NULL;停止 ): ;template bool list:Empty() constreturn (head-next=NULL);template void list:InsertFirst(const T e)node *p=new node;p-data=e;p-next=head-next;head-next=p;template void list:InsertLast(const T e)node *p,*q;p
16、=head;q=new node;q-data=e;while(p-next)p=p-next;p-next=q;q-next=NULL;template void list:DeleteFirst()head-next=head-next-next;template void list:DeleteLast()node *p;p=head;while(p-next-next)p=p-next;p-next=NULL;template void list:Display() const /node *p;p=head-next;显示链表while(p)coutdatanext;template
17、 node* list:GetNode(int i) /返回第i个节点int k=0;node *p;p=head;while(p & knext;+k;return p;template void list: Reverse() /node *p,*q;p=head-next;int count=0;链表逆置while(p) /p=p-next;count+;int i,j;i=1;求链表的长度j=count;while(i=count/2)p=GetNode(i);q=GetNode(j);T temp=p-data; p-data=q-data; q-data=temp; +i;-j;t
18、emplate bool list:Find(const T e) /bool flag=false;在链表中查找某个值node *p;p=head-next;while(p)if(p-data=e)flag=true;break;p=p-next;return flag;template list:list()node *p;while(head)p=head-next;delete head;head=p;附:测试实例int main()list ilist;(); /创建链表(); /输出链表coutendl;(123); /从头插入一个值(456); /从尾插入一个值();couten
19、dl;if(123)cout123在链表中 endl;elsecout123不在链表中 endl;(); /从头删除一个值(); /从尾删除一个值();coutendl;(); /逆序();coutdata=x;s-next=top;top=s;return top;/ 出栈LinkStack Pop_LinkStack(LinkStack &top, int &x)StackNode *p;if(top = NULL)return NULL;elsex=top-data;p=top;top=top-next;delete p;return top;/ 主函数void main()Node *s;s=Init_LinkStack();Push_LinkStack(s,10);Push_LinkStack(s,12);Push_LinkStack(s,14);while(!Empty_LinkStack(s)int d;Pop_LinkStack(s,d);coutdnext = NULL;q-front = q-rear = p;/q-
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业失信事项管理办法
- 企业关键资金管理办法
- 信息泄露安全管理办法
- 卫生法律法规宣传课件
- 2025年物流师技能鉴定模拟试卷:物流配送网络设计与优化题库含答案
- 同音字 教学课件
- 2025年晋城市税务系统遴选面试真题附详解含答案
- 2025年重庆出租车考试资格证试题答案
- 电子产品综合设计与制作 课件 项目5任务 (4)三维设计软件使用
- 初二英语片段教学课件
- 河南省安阳市林州市2024-2025学年八年级下学期期末历史试卷 (含答案)
- 胸痛单元建设课件介绍
- 超市消防安全管理制度制度
- 酒店服务流程与空间布局优化
- DB11∕T 2380-2024 城市轨道交通工程盖挖法施工技术规程
- (2025)医疗护理员理论考试试题含答案
- 2025年贵州省中考英语真题含答案
- 2025年广西中考语文试题卷(含答案)
- 建设工程法律培训
- 2025年南京市中考数学真题试卷
- 2025年呼伦贝尔农垦集团有限公司招聘笔试参考题库含答案解析
评论
0/150
提交评论