线表的插入和删除(数据结构).doc_第1页
线表的插入和删除(数据结构).doc_第2页
线表的插入和删除(数据结构).doc_第3页
线表的插入和删除(数据结构).doc_第4页
线表的插入和删除(数据结构).doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

电子信息工程学系实验报告 适用于计算机课程成 绩:课程名称: 指导教师(签名):实验项目名称:线性表的插入和删除 实验时间: 2012、3、5 班级:计应102 姓名: 学号: 实 验 目 的: 熟悉掌握线性表的基本操作在顺序存储结构和链式存储结构上的实现,并熟悉其各自的优缺点及适用性。实 验 环 境: CFree5.0实 验 内 容 及 过 程: 题目1:编写程序实现下列的要求:(1) 设数据元素为整数,实现这样的线性表的顺序存储表示。(2) 键盘输入10个数据元素,利用顺序表的基本操作,建立该表。(3) 利用顺序表的基本操作,找出表中的最大的和最小的数据元素(用于比较的数据元素为整数)。(4) * 若数据元素为学生成绩(含姓名、成绩等字段),重新编程,实现上面的要求。要求尽可能少地修改前面的程序来得到新程序。(这里用于比较的字段为分数)题目2:编写程序实现下列的要求:(1) 设学生成绩表中的数据元素为学生成绩(含姓名、成绩字段),实现这样的线性表的链式存储表示。(2) 键盘输入若干个数据元素(用特殊数据来标记输入数据的结束),利用链表的基本操作(前插或后插算法),建立学生成绩单链表。(3) 键盘输入关键字值x,打印出表中所有关键字值=x的结点数据。(用于比较的关键字字段为分数)。(4) 输入关键字值x,删除表中所有关键字值element=(datatype *)malloc(sizeof(datatype)*m); if(p-element!=NULL) p-maxnum=m; p-n=0; return(p); else free(p); printf(out of space); return NULL;Pseqlist init_seq(Pseqlist p,int n) /* 初始化空的顺序表,即填充数据,顺序表的实际元素个数n 由参数提供*/ int i; printf(input the element of seqlist:); for(i=0;ielementi); p-n=n; return(p);int insertpost_seq(Pseqlist p,int i,datatype x) /* 在i之后插入一个元素x */ int j; if(p-n=p-maxnum) printf(overflow); return(0); if(ip-n ) printf(not exist); return(0); for(j=p-n-1; j=i+1; j-) p-elementj+1=p-elementj; p-elementi+1=x; p-n+; return(1);void print(Pseqlist p) /* 打印顺序表中的元素 */ int i; for(i=0;in;i+) printf(%d ,p-elementi);int FinMax(Pseqlist p)int max=p-element0;int i;for(i=1;in;+i)if(maxelementi)max=p-elementi;return max;int FinMin(Pseqlist p)int min=p-element0;int i;for(i=1;in;+i)if(minp-elementi)min=p-elementi;return min;main() Pseqlist p; int m,n,i,x,k; printf(input the size of seqlist m:); /* 输入顺序表的最大空间m,建立空的顺序表 */ scanf(%d,&m); p=creatnulllist_seq(m); printf(input the real number of seqlist n(nelement=(datatype *)malloc(sizeof(datatype)*m); if(p-element!=NULL) p-maxnum=m; p-n=0; return(p); else free(p); printf(out of space); return NULL;Pseqlist init_seq(Pseqlist p,int n) /* 初始化空的顺序表,即填充数据,顺序表的实际元素个数n 由参数提供*/ int i; printf(输入10个分数:输入10个名字:); for(i=0;ielementi.score,); p-n=n; return(p);int insertpost_seq(Pseqlist p,int i,datatype x) /* 在i之后插入一个元素x */ int j; if(p-n=p-maxnum) printf(overflow); return(0); if(ip-n ) printf(not exist); return(0); i-=2; for(j=p-n-1; j=i+1; j-) p-elementj+1=p-elementj; p-elementi+1=x; p-n+; return(1);int FinMax(Pseqlist p)int max=p-element0.score;int i;for(i=1;in;+i)if(maxelementi.score)max=p-elementi.score;return max;int FinMin(Pseqlist p)int min=p-element0.score;int i;for(i=1;in;+i)if(minp-elementi.score)min=p-elementi.score;return min;void print(Pseqlist p) /* 打印顺序表中的元素 */ int i; for(i=0;in;i+) printf(姓名:%s 分数:%d,,p-elementi.score);main() Pseqlist p; int m,n,i,x,k; datatype aa; printf(input the size of seqlist m:); /* 输入顺序表的最大空间m,建立空的顺序表 */ scanf(%d,&m); p=creatnulllist_seq(m); printf(input the real number of seqlist n(nm):); /* 输入顺序表的实际长度n,初始化顺序表 */ scanf(%d,&n); p=init_seq(p,n); /* 输出插入之前顺序表的元素 */ print(p); printf(n); printf(input i,x.score,:); scanf(%d%d%s,&i,&aa.score,); /* k的值用来表示是否插入成功 */ k=insertpost_seq(p,i,aa); if(k=1) print(p); /* 如果插入成功,输出插入之后顺序表的元素 */ printf(n%d %d,FinMax(p),FinMin(p); printf(分别是最大的和最小的数据); getch();题目二代码:/* 线性表的单链表表示:类型和界面函数定义*/#include /* 定义链接表元素类型。应根据需要定义 */#define NULL 0typedef int position;typedef struct studentint score;char name20;DataType;struct Node; /* 单链表结点类型 */typedef struct Node *PNode; /* 结点指针类型 */typedef struct Node *List; /* 单链表类型 */struct Node /* 单链表结点结构 */ DataType info; PNode link;printlist(List L) List p; p=L-link; printf(The list are:); while(p!=NULL) printf(%d,p-info); p=p-link; printf(n);insertList(List L,position p,DataType x) position i; List s,q; i=0; q=L; while(q-link!=NULL&ilink; i+; /*q不为NULL*/ s=(List)malloc(sizeof(struct Node); s-info=x; s-link=q-link; q-link=s;deleteList(List L,position p) position i; List s,q; i=0; q=L; while(ilink; i+; /*以上程序段使得q指向ap-1*/ s=q-link; /*s指向ap*/ q-link = q-link-link; free(s);deleteListX(List L,DataType x) List q,s; q=L; while(q-link!=NULL&q-link-info.score!=x.score) q=q-link; if (q-link=NULL) return; s=q-link; /*s指向ap*/ q-link = q-link-link; /free(s);int ListIsNull(List L) if(L-link=NULL) return 1; else return 0;List createNulllist() List s; s=(List)malloc(sizeof(List); s-info.score=100; s-link=NULL; return s;DeleteLess(List L,int data)List T=L;while(L!=NULL)if(L-info.scoreinfo);L=L-link;void FindLess(List L,int data)while(L!=NULL)if(L-,L-info.score);L=L-link;main() List head; int i=0,X; head=createNulllist(); printf(请先输入学生的分数,

温馨提示

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

评论

0/150

提交评论