已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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;return 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;head=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;/ifelsewhile(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=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;/操作数2 int z;/答案;/创建void cre(int a10,int line)/数组,总数,范围上届int i=0,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;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;/switch/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,int 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;j10;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 #include #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,158725521);/inst(head,r);add(head,r);display(head);coutnameendl;delh(head);delt(head);*#36动态数组#include#includevectorb;/声明int i,m;for(i=0;i20;i+)b.push_back(i);for(i=0;i20;i+)coutbi;coutendl;/ m=b.size();/返回容器大小/ m=b.empty();/判断是否为空/ b.pop_back();/删除容器的末元素,并不返回该元素。/ b.erase(b.begin(),b.begin()+3);/删除,可意为下标之间,含前/ b.resize(b.size()-1);/重置容器大小/ b.insert(b.begin()+5,22);/插入后下标为5/ vector:iterator p=b.begin()+1; /p指向v1的最后一个元素的下一位置。/ m=*p;/ coutb.size()endl;for(i=0;ib.size();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 list public: list(); void Create(); /创建链表 bool Empty() const; /判断链表是否为空 void InsertLast(const T e); /从尾部插入一个元素 void InsertFirst(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 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() const return (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=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 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; template 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; ilist.Create(); /创建链表 ilist.Display(); /输出链表 coutendl; ilist.InsertFirst(123); /从头插入一个值 ilist.InsertLast(456); /从尾插入一个值 ilist.Display(); coutendl; if(ilist.Find(123) cout123 在链表中endl; elsecout123 不在链表中endl; ilist.DeleteFirst(); /从头删除一个值 ilist.DeleteLast(); /从尾删除一个值 ilist.Display(); coutendl; ilist.Reverse(); /逆序 ilist.Display(); coutdata=x; s-next=top; top=s; return top;/出栈LinkStack Pop_LinkStack(LinkStack &top, int &x) StackNode *p; if(top = NULL) return NULL; else x=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-front = q
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 临时占用土地租赁协议
- 快件赊销协议书
- 2024建设工程补充合同范本
- 求职意向书样本-书信范本
- 2024幼儿园保安聘用合同
- 劳务施工安全协议书范本2024年
- 浙江省初中名校七年级上学期语文期中试卷5套【附答案】
- 吉林省杂粮采购合同
- 4.1 夯实法治基础 (大单元教学设计) 2024-2025学年统编版道德与法治九年级上册
- 家庭雇佣保姆合同模板
- 煤矿皮带智能化集控系统PPT教学讲授课件
- 个人财务管理系统的设计与实现--论文
- 分数乘除法整理复习(课堂PPT)
- 杭州会展业发展与对策研究文献综述
- 小学六年级英语上册《Unit 1 How can I get there》教案
- 完整版方法验证报告模板最终
- 电力管道资料表格(共30页)
- 大班科学活动教案《豆豆家族》含PPT课件
- 【精品试卷】部编人教版(统编)一年级上册语文第一单元测试卷含答案
- 金属有机化学ppt课件
- 数学说题稿(共4页)
评论
0/150
提交评论