线性表和链表数据的插入,删除,查找_第1页
线性表和链表数据的插入,删除,查找_第2页
线性表和链表数据的插入,删除,查找_第3页
线性表和链表数据的插入,删除,查找_第4页
线性表和链表数据的插入,删除,查找_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验一程序:(1)线性表:程序清单:#include"stdio.h"intA[100];intn;voidcreate(intn){inti;for(i=1;i<=n;i++){printf("输入A中元素值\n");scanf_s("%d",&A[i]);}}voidinsert(inti,intx){intj;if(i<1||i>n)printf("i值错误啦!\n");else{for(j=n;j>=i;j--)A[j+1]=A[j];/*将第i个元素及其后的元素后移*/A[i]=x;n++;/*向量长度增1*/}}voidshanchu(inti){intj;if(i〈1||i〉n)printf("i值出错啦!\n");else{for(j=i;j〈=n;j++)A[j]=A[j+1];n--;}}voidfind(intn,intx){inti=1;while(i〈=n&&A[i]!=x)i++;if(i〈=n)printf("恭喜您,找到了!\n");elseprintf("很遗憾,没找到!\n");}voidxuanze(intl){if(l==1){inti,x,m;printf("执行插入操作\n");printf("请输入插入位置i\n");scanf_s("%d",&i);printf("请输入插入值x\n");scanf_s("%d",&x);insert(i,x);printf("************************\n");printf("操作后的线性表为\n");for(m=1;m〈=n;m++){printf("%d\n",A[m]);}}elseif(l==2){intm,i;printf("执行删除操作\n");printf("请输入删除的值i\n");scanf_s("%d",&i);shanchu(i);printf("************************\n");printf("操作后的线性表为\n");for(m=1;m〈=n;m++){printf("%d\n",A[m]);}}elseif(l==3){intx;printf("执行查找操作\n");printf("输入要查找的x值\n");scanf_s("%d",&x);find(n,x);printf("************************\n");}elseprintf("出错啦!!\n");}main(){intl;intp;printf("请输入线性表的长度n\n");scanf_s("%d",&n);create(n);do{printf("选择界面,请选择操作\n");printf("请输入l的值l=(1插入,2删除,3查找八n〃);

scanf_s("%d",&l);xuanze(l);printf(〃是否继续操作(是请按2,否按其他键)\n〃);scanf_s("%d",&p);}while(p==2);}程序运行结果:请输入线性耒的长唐n输入口中元素值输入口中元素值输入口中元素值选怪界面,请选怪操作请输入1的值"(1祐入,2删除,3查找)鼻行祐入操作请输入祐入位置i备输入祐入值x9操作后的线性耒対MXMXMXMXMXMXMXMXMXMXMXMX悴作后的线性耒为岸否继续操作(旱请按近否按苴他键〉陆择界面,请选择操作眉输入丄的值"(1插入,z删除,3查找)$九行查找操作横入要查找的-fi常喜您,找到了辛}<坯}<坯}<坯}<坯}<坯}<坯}<坯}<坯}<坯}<坯}<坯}<坯馆否继续操作(旱请按近否按苴他键〉陆择界面,请选择操作眉输入丄的值"(1插入,z删除,3查找)$九行查找操作輪入要查找的-fip很遗憾,沿找到辛}<坯}<坯}<坯}<坯}<坯}<坯}<坯}<坯}<坯}<坯}<坯}<坯鷲否继续操作保请按込否按苴他键〉选怪界面,请选怪操作请输入1鷲否继续操作保请按込否按苴他键〉选怪界面,请选怪操作请输入1的值"(1祐入,2删除,3查找)鼻行删除操作请输入删除的值i;值出错胁操作后的线性耒対鷲否继续操作保请按込否按苴他键〉选怪界面,请选怪操作请输入1的值"(1祐入,2删除,3查找)鼻行删除操作请输入删除的值i3(2)链表:程序清单:#include<stdio.h>#include<malloc.h>typedefstructlinknode{intdata;structlinknode*next;}node;intn;node*head;node*creat(void){node*head;node*p,*s;n=0;p=s=(node*)malloc(sizeof(node));scanf_s("%d",&p->data);head=NULL;while(p->data!=0){n++;if(n==1)head=p;elses->next=p;s=p;p=(node*)malloc(sizeof(node));scanf_s("%d",&p->data);}s->next=NULL;return(head);}voidprint(node*head){node*h;printf("\n操作后链表中的数据\n",n);h=head;if(head!=NULL)do{printf("%d\n",h->data);h=h->next;}while(h!=NULL);}voidfind(node*head,intx){node*p,*q;if(head==NULL)printf("链表下溢!\n〃);/*如果单链表为空,则下溢处理*/if(head->data==x) /*如果表头结点值等于x值,则删除之*/{p=head;head=head->next;printf("结点找到了!\n");}else{q=head;p=head->next;/*从第二个结点开始查找其值为x的结点*/while(p!=NULL&&p->data!=x)if(p-〉data!=x) /*在查找时,p指向该结点,q指向其前一结点*/{q=p;p=p-〉next;}if(p!=NULL) /*若找到了该结点,则进行删除处理*/{q-〉next=p-〉next;printf("结点找到了!\n");}else /*未找到时,显示相应信息*/printf("结点未找到!\n");}}voidlength(node*head){inti=0;node*p;p=head;while(p!=NULL){p=p-〉next;i++;}printf("单链表的长度为%d\n",i);}node*insert(node*head,inti,intx){node*s,*p;intj;s=(node*)malloc(sizeof(node));/*建立一个待插入的结点s*/s-〉data=x;if(i==0) /*如果i=0,则将s所指结点插入到表头后返回*/{s-〉next=head;head=s;}else{p=head;j=1; /*在单链表中查找第i个结点,由p所指向*/while(p!=NULL&&j<i){j++;p=p->next;}if(p!=NULL) /*若查找成功,则把s插入到其后*/{s->next=p->next;p->next=s;}elseprintf("i值输入出错,未找到!\n");}return(head);}node*shanchu(node*head,intx){node*p,*q;if(head==NULL)printf("链表下溢!\n〃);/*如果单链表为空,则下溢处理*/if(head->data==x) /*如果表头结点值等于x值,则删除之*/{p=head;head=head->next;free(p);}else{q=head;p=head->next;/*从第二个结点开始查找其值为x的结点*/while(p!=NULL&&p->data!=x)if(p-〉data!=x) /*在查找时,p指向该结点,q指向其前一结点*/{q=p;p=p-〉next;}if(p!=NULL) /*若找到了该结点,则进行删除处理*/{q-〉next=p-〉next;free(p);}else /*未找到时,显示相应信息*/printf("未找到!\n");}return(head);}voidxuanze(intl){if(l==1){intx;printf("请输入要查找的结点x的值\n");scanf_s("%d",&x);find(head,x);}elseif(l==2){length(head);}elseif(l==3){inti,x;printf("在第i个结点后插入x值\n");printf("请输入插入位置i值\n");scanf_s("%d",&i);printf("请输入插入值x\n");scanf_s("%d",&x);head=insert(head,i,x);print(head);}elseif(l==4){intx;printf("请输入要删除的x的值\n");scanf_s("%d",&x);head=shanchu(head,x);print(head);}elseprintf("l值错误\n");}voidmain(){intl,z;printf("请输入链表中的整数数据以零结束\n");head=creat();print(head);do{printf("进入选择界面,请选择操作\n");printf("请输入l的值l=(1查找,2计算链表长度,3插入,4删除)\n〃);scanf_s("%d",&l);xuanze(l);printf("请选择是否继续操作(是请按2,否按其他键)\n");scanf_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论