版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C++数据结构实例代码下载文档可编辑1/2下载文档可编辑下载文档可编辑1线性表的顺序表示#include"iostream"#include"malloc.h"usingnamespacestd;typedefstruct{ int*elem; intlength; intlistsize;}SqList;intInit_Sq(SqList&L){ L.elem=(int*)malloc(100*sizeof(int)); if(!L.elem) exit(-2); L.length=0; L.listsize=100; return1;}intListInsert(SqList&L,inti,inte){ if(i<1||i>L.length+1) return0; if(L.length>=L.listsize){C++数据结构实例代码全文共35页,当前为第1页。 int*newbase=(int*)realloc(L.elem,(L.listsize+10)*sizeof(int));C++数据结构实例代码全文共35页,当前为第1页。 if(!newbase) exit(-2); L.elem=newbase; L.listsize+=10; } int*q=&(L.elem[i-1]); int*p=&(L.elem[L.length-1]); for(p;p>=q;--p){ *(p+1)=*p; } *q=e; ++L.length; return1;}intListDelete(SqList&L,inti,int&e){ if(i<1||i>L.length) return0; int*p=&(L.elem[i-1]); e=*p; int*q=L.elem+L.length-1;C++数据结构实例代码全文共35页,当前为第2页。 for(++p;p<=q;++p){C++数据结构实例代码全文共35页,当前为第2页。 *(p-1)=*p; } --L.length; returne;}intmain(){ inta[6]={1,2,3,4,5}; int*q=&a[1]; int*p=&a[4]; for(p;p>=q;--p){ *(p+1)=*p; } *q=3; for(inti=0;i<6;i++){ cout<<a[i]<<""; } cout<<endl; SqListlx; Init_Sq(lx); for(intj=1;j<10;j++){ ListInsert(lx,j,j);C++数据结构实例代码全文共35页,当前为第3页。C++数据结构实例代码全文共35页,当前为第3页。 ListInsert(lx,3,55); inte_return; ListDelete(lx,4,e_return); for(intm=0;m<10;m++){ cout<<*(lx.elem+m)<<""; } cout<<endl; cout<<e_return; system("pause"); return0;}132345125545678993请按任意键继续...2线性表的链性表示#include"iostream"#include"malloc.h"usingnamespacestd;typedefstructLNode{ intdata;C++数据结构实例代码全文共35页,当前为第4页。 structLNode*next;C++数据结构实例代码全文共35页,当前为第4页。}LNode,*LinkList;intInitList(LinkList&L){ L=(LinkList)malloc(sizeof(LNode)); L->next=NULL; return1;}intListInsert(LinkList&L,inti,inte){ LinkListp=L; intj=0; while(p&&j<i-1){ p=p->next; ++j; } if(!p||j>i-1) return0; LinkLists=(LinkList)malloc(sizeof(LNode)); s->data=e; s->next=p->next; p->next=s;C++数据结构实例代码全文共35页,当前为第5页。 return1;C++数据结构实例代码全文共35页,当前为第5页。}intListDelete(LinkList&L,inti){ LinkListp=L; intj=0; while(p->next&&j<i-1){ p=p->next; ++j; } if(!(p->next)||j>i-1) return0; LinkListq=p->next; p->next=q->next; free(q); return1;}intGetElem(LinkListL,inti){ LinkListp=L->next; intj=1; while(p&&j<i)C++数据结构实例代码全文共35页,当前为第6页。 {C++数据结构实例代码全文共35页,当前为第6页。 p=p->next; ++j; } if(!p||j<i) return0; inte=p->data; returne;}intmain(){ LinkListlx; InitList(lx); for(inti=1;i<6;i++){ ListInsert(lx,i,i); } ListDelete(lx,2); for(intj=1;j<5;j++) { cout<<GetElem(lx,j)<<""; } cout<<endl;C++数据结构实例代码全文共35页,当前为第7页。 LinkListlx1,lx2;C++数据结构实例代码全文共35页,当前为第7页。 InitList(lx1); InitList(lx2); for(intm=1;m<6;m++){ ListInsert(lx1,m,m); } for(intn=1;n<6;n++){ ListInsert(lx2,n,2*n); } for(intj=1;j<6;j++) { cout<<GetElem(lx1,j)<<""; } system("pause"); return0;}134512345请按任意键继续...3双向链表#include"iostream"#include"malloc.h"usingnamespacestd;C++数据结构实例代码全文共35页,当前为第8页。typedefstructdlistC++数据结构实例代码全文共35页,当前为第8页。{ intdata; structdlist*prior; structdlist*next;}DList,*DLinkList;voidInitList(DLinkList&L){ L=(DLinkList)malloc(sizeof(DList)); L->next=L; L->prior=L;}intListInsert(DLinkList&L,inti,inte){ DLinkListp,s; p=L->next; intj=1; while(p&&j<i){ p=p->next; ++j; } if(!p||j>i)C++数据结构实例代码全文共35页,当前为第9页。 return0;C++数据结构实例代码全文共35页,当前为第9页。 s=(DLinkList)malloc(sizeof(DList)); s->data=e; s->prior=p->prior; p->prior->next=s; s->next=p; p->prior=s; return1;}intListDelete(DLinkList&L,inti,int&e){ DLinkListp; p=L->next; intj=1; while(p&&j<i){ p=p->next; ++j; } if(!p||j>i) return0; e=p->data; p->prior->next=p->next;C++数据结构实例代码全文共35页,当前为第10页。 p->next->prior=p->prior;C++数据结构实例代码全文共35页,当前为第10页。 free(p); return1;}intGetElem(DLinkList&L,inti){ DLinkListp,s; p=L->next; intj=1; while(p&&j<i){ p=p->next; ++j; } if(!p||j>i) return0; inte=p->data; returne;}intmain(){ DLinkListlx; InitList(lx);C++数据结构实例代码全文共35页,当前为第11页。 for(inti=1;i<6;i++)C++数据结构实例代码全文共35页,当前为第11页。 { ListInsert(lx,i,2*i-1); } for(intj=1;j<6;j++){ cout<<GetElem(lx,j)<<""; } cout<<endl; inte; ListDelete(lx,2,e); cout<<e<<endl; for(intj=1;j<5;j++){ cout<<GetElem(lx,j)<<""; } system("pause"); return0;}1357931579请按任意键继续...4顺序栈#include"iostream"C++数据结构实例代码全文共35页,当前为第12页。#include"malloc.h"C++数据结构实例代码全文共35页,当前为第12页。usingnamespacestd;#defineSTACK_INIT_SIZE100//存ä?储ä¡é空?间?初?始º?分¤?配?量¢?#defineSTACKINCREMENT10//存ä?储ä¡é空?间?分¤?配?增?量¢?typedefstruct{ int*base; int*top; intstacksize;}Stack;intInitStack(Stack&S){ S.base=(int*)malloc(STACK_INIT_SIZE*sizeof(int)); if(!S.base) exit(-2); S.top=S.base; S.stacksize=STACK_INIT_SIZE; return1;}intGetTop(Stack&S,int&e){ if(S.top==S.base)C++数据结构实例代码全文共35页,当前为第13页。 return0;C++数据结构实例代码全文共35页,当前为第13页。 e=*(S.top-1); return1;}intPush(Stack&S,inte){ if(S.top-S.base>=S.stacksize){ S.base=(int*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(int)); if(!S.base) exit(-2); S.top=S.base+S.stacksize; S.stacksize+=STACKINCREMENT; } *S.top++=e;}intPop(Stack&S,int&e){ if(S.top==S.base) return0; e=*--S.top; return1;C++数据结构实例代码全文共35页,当前为第14页。}C++数据结构实例代码全文共35页,当前为第14页。intmain(){ Stacklx; InitStack(lx); for(inti=1;i<6;i++) { Push(lx,i); } inte; GetTop(lx,e); cout<<e<<endl; inte1; Pop(lx,e1); cout<<e1<<endl; GetTop(lx,e1); cout<<e1<<endl; system("pause"); return0;}55C++数据结构实例代码全文共35页,当前为第15页。4C++数据结构实例代码全文共35页,当前为第15页。请按任意键继续...5队列#include"iostream"#include"malloc.h"usingnamespacestd;typedefstructQNode{ intdata; structQNode*next;}QNode,*QueuePtr;typedefstruct{ QueuePtrfront; QueuePtrrear;}LinkQueue;intInitQueue(LinkQueue&Q){ Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode)); if(!Q.front) exit(-2); Q.front->next=NULL; return1;}C++数据结构实例代码全文共35页,当前为第16页。intDestroyQueue(LinkQueue&Q)C++数据结构实例代码全文共35页,当前为第16页。{ while(Q.front){ Q.rear=Q.front->next; free(Q.front); Q.front=Q.rear; } return1;}intInsert(LinkQueue&Q,inte){ QueuePtrp=(QueuePtr)malloc(sizeof(QNode)); if(!p) exit(-2); p->data=e; p->next=NULL; Q.rear->next=p; Q.rear=p; return1;}intGetFront(LinkQueue&Q,int&e){C++数据结构实例代码全文共35页,当前为第17页。 if(Q.front==Q.rear)C++数据结构实例代码全文共35页,当前为第17页。 return0; e=Q.front->next->data; return1;}intGetRear(LinkQueue&Q,int&e){ if(Q.front==Q.rear) return0; e=Q.rear->data; return1;}intDelete(LinkQueue&Q,int&e){ if(Q.front==Q.rear) return0; QueuePtrp; p=Q.front->next;e=p->data; Q.front->next=p->next; if(Q.rear==p) Q.rear=Q.front;C++数据结构实例代码全文共35页,当前为第18页。 free(p);C++数据结构实例代码全文共35页,当前为第18页。 return1;}intmain(){ LinkQueuelx; InitQueue(lx); for(inti=1;i<6;i++){ Insert(lx,i); } intfront; GetFront(lx,front); cout<<front<<endl; intrear; GetRear(lx,rear); cout<<rear<<endl; inte; Delete(lx,e); cout<<e<<endl; GetFront(lx,front); cout<<front<<endl; system("pause");C++数据结构实例代码全文共35页,当前为第19页。 return0;C++数据结构实例代码全文共35页,当前为第19页。}1512请按任意键继续...6循环队列#include"iostream"#include"malloc.h"usingnamespacestd;#defineMAXSIZE100typedefstruct{ int*base; intfront; intrear;}SqQueue;intInit(SqQueue&Q){ Q.base=(int*)malloc(MAXSIZE*sizeof(int)); if(!Q.base) exit(-2);C++数据结构实例代码全文共35页,当前为第20页。 Q.front=Q.rear=0;C++数据结构实例代码全文共35页,当前为第20页。 return1;}intQueueLength(SqQueue&Q){ return(Q.rear-Q.front+MAXSIZE)%MAXSIZE;}intEnQueue(SqQueue&Q,inte){ if((Q.rear+1)%MAXSIZE==Q.front) return0; Q.base[Q.rear]=e; Q.rear=(Q.rear+1)%MAXSIZE; return1;}intDeQueue(SqQueue&Q,int&e){ if(Q.front==Q.rear) return0; e=Q.base[Q.front]; Q.front=(Q.front+1)%MAXSIZE; return1;C++数据结构实例代码全文共35页,当前为第21页。}C++数据结构实例代码全文共35页,当前为第21页。intGetFront(SqQueue&Q){ inte=Q.base[Q.front]; returne;}intGetrear(SqQueue&Q){ inte=Q.base[Q.rear-1]; returne;}intmain(){ SqQueuelx; Init(lx); for(inti=1;i<6;i++){ EnQueue(lx,i); } cout<<QueueLength(lx)<<endl; cout<<GetFront(lx)<<endl; cout<<Getrear(lx)<<endl; intm;C++数据结构实例代码全文共35页,当前为第22页。 DeQueue(lx,m);C++数据结构实例代码全文共35页,当前为第22页。 cout<<m<<endl; cout<<GetFront(lx)<<endl; system("pause"); return0;}51512请按任意键继续...7顺序表字符串#include"iostream"#include"malloc.h"usingnamespacestd;#defineOK1#defineERROR0typedefstruct{ char*ch; intlength;}HString;C++数据结构实例代码全文共35页,当前为第23页。intStrAssign(HString&T,char*chars)C++数据结构实例代码全文共35页,当前为第23页。{ T.ch=(char*)malloc(sizeof(char)); if(T.ch) free(T.ch); //inti=strlen(chars); inti=0; char*c; for(c=chars;*c;++i,++c);//判D断?条¬?件t为a*c!='\0' if(!i){ T.ch=NULL; T.length=0; } T.ch=(char*)malloc(i*sizeof(char)); for(intj=0;j<i;j++) { T.ch[j]=chars[j]; } T.length=i; returnOK;0}intStrLength(HString&S)C++数据结构实例代码全文共35页,当前为第24页。{C++数据结构实例代码全文共35页,当前为第24页。 returnS.length;}intConcat(HString&T,HString&S1,HString&S2){ T.ch=(char*)malloc((S1.length+S2.length)*sizeof(char)); for(inti=0;i<S1.length;i++){ T.ch[i]=S1.ch[i]; } T.length=S1.length+S2.length; for(intj=0;j<S2.length;j++) { T.ch[S1.length+j]=S2.ch[j]; } returnOK;}intSubString(HString&Sub,HString&S,intpos,intlen){ if(pos<1||pos>S.length||len<0||len>S.length-pos+1){ returnERROR; } Sub.length=len;C++数据结构实例代码全文共35页,当前为第25页。 Sub.ch=(char*)malloc(len*sizeof(char));C++数据结构实例代码全文共35页,当前为第25页。 for(inti=0;i<len;i++){ Sub.ch[i]=S.ch[pos+i]; } returnOK;}intPrint(HString&T){ for(inti=0;i<T.length;i++) { cout<<T.ch[i]<<""; } cout<<endl; returnOK;}intmain(){ HStringlx,hhc; StrAssign(lx,"huanhuncao"); StrAssign(hhc,"lixing"); Print(lx); Print(hhc); cout<<StrLength(lx)<<endl;C++数据结构实例代码全文共35页,当前为第26页。 cout<<StrLength(hhc)<<endl;C++数据结构实例代码全文共35页,当前为第26页。 HStringlx1; lx1.ch=(char*)malloc((lx.length+hhc.length)*sizeof(char)); Concat(lx1,lx,hhc); Print(lx1); HStringlx2; SubString(lx2,lx1,2,3); Print(lx2); system("pause"); return0;}huanhuncaolixing106huanhuncaolixinganh请按任意键继续...8链式字符串就是线性表的链式表示一样9数组的表示#include"iostream"C++数据结构实例代码全文共35页,当前为第27页。#include"stdarg.h"//提供宏va_startC++数据结构实例代码全文共35页,当前为第27页。#include"malloc.h"usingnamespacestd;#defineMAX_ARRAY_DIM8#defineOK1#defineERROR0typedefstruct{ int*base; intdim; int*bounds; int*constants; intelemtotal;}Array;intInitArray(Array&A,intdim,...){ if(dim<1||dim>MAX_ARRAY_DIM) returnERROR; A.dim=dim; cout<<"数组维数是:"<<A.dim<<endl; A.bounds=(int*)malloc(dim*sizeof(int)); if(!A.bounds)C++数据结构实例代码全文共35页,当前为第28页。 exit(-2);C++数据结构实例代码全文共35页,当前为第28页。 intelemtotal=1; va_listap; va_start(ap,dim); cout<<"数组每维元素数目分别是:"<<""; for(inti=0;i<dim;i++){ A.bounds[i]=va_arg(ap,int); cout<<A.bounds[i]<<""; if(A.bounds[i]<0){ return-2;} elemtotal*=A.bounds[i]; } cout<<endl; cout<<"数组元素数目是:"<<elemtotal<<endl; A.elemtotal=elemtotal; va_end(ap); A.base=(int*)malloc(elemtotal*sizeof(int)); *(A.base)=0; if(!A.base) exit(-2); A.constants=(int*)malloc(dim*sizeof(int)); if(!A.constants)C++数据结构实例代码全文共35页,当前为第29页。 exit(-2);C++数据结构实例代码全文共35页,当前为第29页。 A.constants[dim-1]=1; for(inti=dim-2;i>=0;--i){ A.constants[i]=A.bounds[i+1]*A.constants[i+1]; } returnOK;}intDestroyArray(Array&A){ if(!A.base) returnERROR; free(A.base); A.base=NULL; if(!A.bounds) returnERROR; free(A.bounds); A.bounds=NULL; if(!A.constants) returnERROR; A.constants=NULL; returnOK;}intLocate(Array&A,va_listap,int&off)C++数据结构实例代码全文共35页,当前为第30页。{C++数据结构实例代码全文共35页,当前为第30页。 off=0; intind=0; for(inti=0;i<A.dim;i++){ ind=va_arg(ap,int); if(ind<0||ind>=A.bounds[i]) return-1; off+=A.constants[i]*ind; } returnOK;}intreturnLocate(Array&A,intany,...){ intoff=0; va_listap; va_start(ap,any); intind=0; for(inti=0;i<A.dim;i++){ ind=va_arg(ap,int); if(ind<0||ind>=A.bounds[i]) return-1; off+=A.constants[i]*ind;C++数据结构实例代码全文共35页,当前为第31页。 }C++数据结构实例代码全文共35页,当前为第31页。 va_end(ap); returnoff;}intValue(Array&A,intany,...){ i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 文化产业示范基地复核书
- 河北省邢台市威县寺庄中学2024-2025学年八年级上学期期中地理试题(含答案)
- 实验室用拭子实验室工具产业链招商引资的调研报告
- 吉他弦桥市场需求与消费特点分析
- 单肩包市场发展预测和趋势分析
- 人教版英语八年级下册 Unit 1-3 单元阅读训练
- 高效灌溉技术在蔬菜种植中的应用分析报告
- 可充气薄橡胶玩具市场需求与消费特点分析
- 土耳其毡帽产业规划专项研究报告
- 城市公共设施门窗改造方案
- 大学军事理论课教程第四章现代战争第一节 战争概述
- 我国煤炭转型调研报告
- 产品合格证出厂合格证A4打印模板
- (通用)国家电网考试历年真题库(附答案)
- 学浪入驻教师合作协议范本
- 外脚手架拆除安全技术交底3篇
- 龙头股战法完整
- 京仪单晶炉电气控制系统软件使用说明书
- 商铺租赁合同完整版下载
- 制作简易纸折扇 (教案)-三年级上册劳动浙教版
- 电子商务对物流管理的影响-电子商务毕业论文设计
评论
0/150
提交评论