您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 能源与动力工程 > 数据结构实验(北京石油化工学院-)
GeneratedbyUnregisteredBatchDOC&DOCXConverter2010.2.205.1366,pleaseregister!班级:计111姓名:李洋宇学号:1107731.设计题目。实验一线性表的基本操作一、实验目的1)掌握顺序表、链表的概念,学会对顺序表、链表进行操作。2)实现顺序表、链表的存储结构,逐步培养解决实际问题的能力二、实验内容顺序表、链表结构的生成,插入,删除,定位,查找三、实验步骤1.定义节点2.生成一个单链表(正序建立单链表或逆序建立单链表)3.单链表中插入一个元素4.在单链表中删除一个元素5.按序号查找一个元素6.按值(关键字)查找一个元素7.显示单链表所有元素2.运行环境(软、硬件环境)简介。1.硬件环境:PC机内存4G;硬盘500G2.软件环境:操作系统:windows7编辑环境:VisualC++6.0word20073.问题描述,包括目标、任务、条件和约束的描述。1.定义节点2.生成一个单链表(正序建立单链表或逆序建立单链表)3.单链表中插入一个元素4.在单链表中删除一个元素5.按序号查找一个元素6.按值(关键字)查找一个元素7.显示单链表所有元素4.算法设计的思想顺序表、链表结构的生成,插入,删除,定位,查找GeneratedbyUnregisteredBatchDOC&DOCXConverter2010.2.205.1366,pleaseregister!5.算法的流程图6.源代码//link.cpp:Definestheentrypointfortheconsoleapplication.//#includestdafx.h#includewindows.h//totesttheclass--Sleep(10000);#includeiostream//printf()usingnamespacestd;typedefstructNode{chardata;structNode*next;GeneratedbyUnregisteredBatchDOC&DOCXConverter2010.2.205.1366,pleaseregister!}Node,*LinkList;classLink{public:Link(void);~Link(void);LinkListcreate(LinkListL);Node*create();Node*insert(Node*L,inti,chare);intLink::del(LinkList&L,inti,char&e);voiddisplay(LinkListL);Node*locatenode(LinkListhead,charkey);intgetElem(LinkListL,inti);};voidmain(){Linklink;Node*p;chardata;intposition;intnSelect;boolisExit=false;printf(\n开始链表操作);p=link.create();printf(链表创建成功!\n);link.display(p);while(!isExit){printf(\n请输入指令(键入相应数字));printf(\n1.展示链表);printf(\n2.通过ID查询数据);printf(\n3.通过数据查询ID);printf(\n4.通过ID删除数据);printf(\n5.在给定位置后添加数据);printf(\n6.退出\n);scanf(%d,&nSelect);switch(nSelect){case1:link.display(p);break;case2:GeneratedbyUnregisteredBatchDOC&DOCXConverter2010.2.205.1366,pleaseregister!printf(键入需查询的ID:\n);scanf(%d,&position);link.getElem(p,position);break;case3:printf(键入需要查询的数据:\n);scanf(%s,&data);link.locatenode(p,data);break;case4:printf(键入你所需要删除的ID:\n);printf(ID:);scanf(%d,&position);link.del(p,position,data);break;case5:printf(请输入数据以及需要插入的ID:\n);printf(data:);scanf(%s,&data);printf(ID:);scanf(%d,&position);link.insert(p,position,data);break;case6:isExit=true;printf(\n退出成功!);break;default:printf(\n错误,请在此输入);break;}}}LinkListLink::create(LinkListL){Node*s,*p=L;charc;intflag=1;while(flag){scanf(%s,&c);if(c!='/')GeneratedbyUnregisteredBatchDOC&DOCXConverter2010.2.205.1366,pleaseregister!{s=(Node*)malloc(sizeof(Node));s-data=c;s-next=p-next;p-next=s;p=L;}elseflag=0;}returnL;}Node*Link::create(){charch;Node*head,*s,*r;head=NULL;r=NULL;printf(\n输入数据:(以'/'结束)\n);ch=getchar();while(ch!='/'){s=(Node*)malloc(sizeof(Node));s-data=ch;if(head==NULL)head=s;elser-next=s;r=s;ch=getchar();}if(r!=NULL)r-next=NULL;returnhead;}//创建链表intLink::del(LinkList&L,inti,char&e){LinkListp=L;intj=0;while(p-next&&ji-2){p=p-next;++j;}if(!(p-next)||ji-1)return0;LinkListq=p-next;p-next=q-next;GeneratedbyUnregisteredBatchDOC&DOCXConverter2010.2.205.1366,pleaseregister!e=q-data;printf(\n删除的数据是%c,e);free(q);printf(\n删除成功!);return1;}//删除Node*Link::insert(Node*L,inti,chare){Node*p=L,*s;intj=0;while(p!=NULL&&ji-1){p=p-next;++j;}if(!p||ji-1){printf(错误);returnNULL;}s=(Node*)malloc(sizeof(Node));s-data=e;s-next=p-next;p-next=s;printf(\n插入成功!);returnp;}//插入voidLink::display(LinkListL){printf(\n链表为:\n);intflag=1;while(L!=NULL){printf(%d,flag);printf(---);printf(%c,L-data);printf();L=L-next;flag++;}GeneratedbyUnregisteredBatchDOC&DOCXConverter2010.2.205.1366,pleaseregister!printf(\n展示结束!\n);}//显示Node*Link::locatenode(LinkListhead,charkey){Node*p=head-next;inttemp=2;while(p&&p-data!=key){p=p-next;temp++;}if(p!=NULL){printf(%c在链表中的第%d位!\n,key,temp);printf(定位结束!\n);returnp;}else{printf(\n链表中无此数据!\n);printf(定位结束!\n);}returnNULL;}//通过定位intLink::getElem(LinkListL,inti){LinkListp=L-next;chare;intj=1;while(p&&ji-1){p=p-next;++j;}if(!p||ji){return0;}e=p-data;printf(\n第%d位是数据%c!\n,i,e);printf(查询结束!\n);GeneratedbyUnregisteredBatchDOC&DOCXConverter2010.2.205.1366,pleaseregister!return1;}//通过位数查找Link::Link(void){//Link::create();}Link::~Link(void){}7.运行结果分析GeneratedbyUnregisteredBatchDOC&DOCXConverter2010.2.205.1366,pleaseregister!
本文标题:数据结构实验(北京石油化工学院-)
链接地址:https://www.777doc.com/doc-4764858 .html