版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.Word文档数据结构实验报告一、顺序表操作验证1.实验目的⑴掌握线性表的顺序存储结构;⑵验证顺序表及其基本操作的实现;⑶掌握数据结构及算法的程序实现的基本方法。2.实验内容⑴建立含有若干个元素的顺序表;⑵对已建立的顺序表实现插入、删除、查找等基本操作。3.设计与编码#include<stdio.h>#include<stdlib.h>#include<malloc.h>structLinearList{ int*list; intsize;intMaxSize;};typedefstructLinearListLIST;voidInitList(LIST*L,intms){ if((L->list=(int*)malloc(ms*sizeof(int)))==NULL){ printf("内存申请错误!\n"); exit(1); } L->size=0; L->MaxSize=ms;}intInsertList(LIST*L,intitem,intrc){inti; if(L->size>=L->MaxSize) return-1; if(rc<0) rc=0; if(rc>L->size) rc=L->size; for(i=L->size-1;i>=rc;i--) L->list[i+1]=L->list[i]; L->list[rc]=item; L->size++; return0;}voidOutputList(LIST*L){ inti; for(i=0;i<L->size;i++) printf("%d",L->list[i]); printf("\n");}intFindList(LIST*L,intitem){ inti; for(i=0;i<L->size;i++) if(item==L->list[i]) returni; return-1;}intDeleteList1(LIST*L,intitem){ inti,n; for(i=0;i<L->size;i++) if(item==L->list[i]) break; if(i<L->size){ for(n=i;n<L->size-1;n++) L->list[n]=L->list[n+1]; L->size--; returni; } return-1;}intDeleteList2(LIST*L,intrc){ inti,n; if(rc<0||rc>=L->size) return-1; for(n=rc;n<L->size-1;n++) L->list[n]=L->list[n+1]; L->size--; return0;}voidmain(){LISTLL;inti,r;printf("listaddr=%p\tsize=%d\tMaxSize=%d\n",LL.list,LL.size,LL.MaxSize);InitList(&LL,100);printf("listaddr=%p\tsize=%d\tMaxSize=%d\n",LL.list,LL.size,LL.MaxSize); while(1) { printf("请输入元素值,输入0结束插入操作:"); fflush(stdin); scanf("%d",&i); if(i==0) break; printf("请输入插入位置:"); scanf("%d",&r); InsertList(&LL,i,r-1); printf("线性表为:"); OutputList(&LL); } while(1) { printf("请输入查找元素值,输入0结束查找操作:"); fflush(stdin); scanf("%d",&i); if(i==0) break; r=FindList(&LL,i); if(r<0) printf("没找到\n"); else printf("有符合条件的元素,位置为:%d\n",r+1); } while(1) { printf("请输入删除元素值,输入0结束查找操作:"); fflush(stdin); scanf("%d",&i); if(i==0) break; r=DeleteList1(&LL,i); if(r<0) printf("没找到\n"); else{ printf("有符合条件的元素,位置为:%d\n线性表为:",r+1); OutputList(&LL); } } while(1) { printf("请输入删除元素位置,输入0结束查找操作:"); fflush(stdin); scanf("%d",&r); if(r==0) break; i=DeleteList2(&LL,r-1); if(i<0) printf("位置越界\n"); else{ printf("线性表为:"); OutputList(&LL); } }}4.运行结果单链表操作验证1.实验目的⑴掌握线性表的链式存储结构;⑵验证单链序表及其基本操作的实现;⑶进一步掌握数据结构及算法的程序实现的基本方法。2.实验内容⑴用头插法(或尾插法)建立带头结点的单链表;⑵对已建立的单链表实现插入、删除、查找等基本操作。3.设计与编码#include<stdio.h>#include<malloc.h>typedefstructlist{ intdata; structlist*next;}LIST;voidInitList(LIST**p){ *p=NULL;}voidInsertList1(LIST**p,intitem,intrc){ inti; LIST*u,*q,*r; u=(LIST*)malloc(sizeof(LIST)); u->data=item; for(i=0,r=*p;i<rc&&r!=NULL;i++){ q=r; r=r->next; } if(r==*p) *p=u; else q->next=u; u->next=r;}voidInsertList2(LIST**p,intitem){ LIST*u,*q,*r; u=(LIST*)malloc(sizeof(LIST)); u->data=item; for(r=*p;r!=NULL&&r->data<item;q=r,r=r->next); if(r==*p) *p=u; else q->next=u; u->next=r;}intDeleteList(LIST**p,intitem){ LIST*q,*r; q=*p;r=q; if(q==NULL) return1; if(q->data==item){ *p=q->next; free(r); return0; } for(;q->data!=item&&q->next!=NULL;r=q,q=q->next); if(q->data==item){ r->next=q->next; free(q); return0; } return1;}intFindList(LIST*p,intitem){ inti; for(i=1;p->data!=item&&p!=NULL;p=p->next,i++); return(p==NULL)?-1:i;}voidOutputList(LIST*p){ while(p!=NULL){ printf("%4d",p->data); p=p->next; } printf("\n");}voidFreeList(LIST**p){ LIST*q,*r; for(q=*p;q!=NULL;){ r=q; q=q->next; free(r); } *p=NULL;}intmain(){ LIST*p; intop,i,rc; InitList(&p); while(1) { printf("请选择操作1:指定位置追加2:升序追加3:查找结点\n"); printf("4:删除结点5:输出结点6:清空链表0:退出\n"); fflush(stdin); scanf("%d",&op); switch(op){ case0: return-1; case1: printf("请输入新增结点键值和位置:"); scanf("%d%d",&i,&rc); InsertList1(&p,i,rc); break; case2: printf("请输入新增结点键值:"); scanf("%d",&i); InsertList2(&p,i); break; case3: printf("请输入要查找结点的键值:"); scanf("%d",&i); rc=FindList(p,i); if(rc>0) printf("位置为[%d]\n",rc); else printf("没找到\n"); break; case4: printf("请输入要删除结点的键值:"); scanf("%d",&i); rc=DeleteList(&p,i); if(rc==0) printf("删除成功\n",rc); else printf("没找到\n"); break; case5: pr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年山西警官职业学院单招职业适应性考试题库附答案详解(考试直接用)
- 2026年广州城市职业学院单招综合素质考试题库附参考答案详解(巩固)
- 2026年山西药科职业学院单招职业技能考试题库及一套参考答案详解
- 2026年广东茂名农林科技职业学院单招职业适应性考试题库附答案详解(能力提升)
- 2026年广东食品药品职业学院单招职业技能考试题库含答案详解
- 2026年广东省汕尾市单招职业倾向性测试题库及答案详解(各地真题)
- 2026年广州番禺职业技术学院单招职业技能考试题库附参考答案详解(研优卷)
- 2026年广西城市职业大学单招综合素质考试题库及答案详解一套
- 2026年广东省汕尾市单招职业适应性考试题库带答案详解(黄金题型)
- 2026年广州民航职业技术学院单招职业技能测试题库含答案详解(满分必刷)
- 2026春统编版三年级下册道德与法治每课知识点清单
- 2025中国国新控股有限责任公司招聘7人笔试历年常考点试题专练附带答案详解
- 2026秋招:平安银行笔试题及答案
- 2026贵州毕节织金县部分县直单位公开考调工作人员47人实施笔试参考题库及答案解析
- 2026年六安职业技术学院单招职业适应性考试题库附参考答案详解ab卷
- 2026陕煤集团榆林化学有限责任公司招聘(162人)考试备考题库及答案解析
- GB/T 27664.3-2026无损检测仪器超声检测设备的性能与检验第3部分:组合设备
- 2026广东江门职业技术学院管理教辅人员招聘4人备考题库带答案详解(基础题)
- GB/T 46977-2026铸造用再生砂氮、硫、磷含量测定方法
- 突发事件创伤伤员医疗救治规范2025年版
- 2026年跨境电商平台合同
评论
0/150
提交评论