ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:17.93KB ,
资源ID:4030020      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4030020.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构与算法实验报告线性表.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构与算法实验报告线性表.docx

1、数据结构与算法实验报告线性表沈 阳 工 程 学 院学 生 实 验 报 告课程名称: 数据构造与算法 实验题目: 线性表 班 级 学 号 姓 名 地 点 指导教师 实 验 日 期 : 年 月 日一、实验目的1理解线性表的逻辑构造特性,以及这种特性在计算机内的两种存储构造。2掌握线性表的顺序存储构造的定义及其C语言的实现。3掌握线性表的链式存储构造单链表的定义及其C语言的实现。4掌握线性表的根本操作二、实验环境Turbo C或是Visual C+三、实验内容与要求实验1 顺序表的操作请编制C程序,利用顺序存储方式来实现以下功能:根据键盘输入数据建立一个线性表,并输出该线性表;然后根据屏幕菜单的选择

2、,可以进展表的创立,数据的插入删除并在插入和删除数据后再输出线性表;最后在屏幕菜单中选择0,即可完毕程序的运行。分析:当我们要在顺序表的第i个位置上插入一个元素时,必须先将线性表的第i个元素之后的所有元素一次后移一个位置,以便腾出一个位置,再把新元素插入到该位置。当要删除第i个元素时,也只需将第i个元素之后的所有元素前移一个位置。算法描绘:对每个算法,都要写出算法的中文描绘。本实验中要求分别写出在第i个从1开始计数结点前插入数据为x的结点、删除指定结点、创立一个线性表。打印线性表等的算法描绘。实验2 单链表的操作请编制C程序,利用链式存储方式来实现线性表的创立、插入、删除和查找等操作。详细地说

3、,就是要根据键盘输入的数据建立一个单链表;然后根据屏幕菜单的选择,可以进展数据的插入或删除,并在插入或删除数据后,再输出单链表;最后在屏幕菜单中选择0,即可完毕程序的运行。算法描绘:本实验要求分别写出在单链表中第i从1开始计数个位置之后插入元素、创立单链表、在单链表中删除第i个位置的元素、顺序输出单链表的内容等的算法描绘。四、实验过程及结果分析实验1 顺序表的操作#define TURE 1#define FALSE 0#define OK 1#define ERROR 0#define OVERFLOW -2#include#include#define ML 1/线性表#define TU

4、RE 1#define FALSE 0#define OK 1#define ERR 0typedef struct int listML; int size; int MAXSIZE;sqList;sqList *Init_List(sqList *L,int ms);void Disp_List(sqList *L);int LocateElem_List(sqList *L,int x);int Insert_List(sqList *L,int x,int mark);int Delete_List1(sqList *L,int item);int Delete_List2(sqLis

5、t *L,int mark);sqList *Init_List(sqList *L,int ms) L=(sqList *)malloc(ms*sizeof(sqList); if(!L) printf(Memory allocation failuren); exit(OVERFLOW); else L-size=0; L-MAXSIZE=ms; return L;void Disp_List(sqList *L) int i; for(i=0;isize;i+) printf(%d,L-listi); printf(n);int LocateElem_List(sqList *L,int

6、 x) int i=0; for(i=0;isize;i+) if(L-listi=x) return i; if(iL-size) return -1;int Insert_List(sqList *L,int x,int mark) int i=1; if(L-size=L-MAXSIZE) return -1; if(mark0) for(i=L-size+1;i=mark;i-) L-listi+1=L-listi; L-listi=x; else if(marklistL-size=x; L-size+; return FALSE;int Delete_List1(sqList *L

7、,int item) int i,j; for(i=0;isize;i+) if(item=L-listi) break; if(isize) for(j=i+1;jsize-1;j+) L-listj=L-listj+1; L-size-; return i; return FALSE;int Delete_List2(sqList *L,int mark) int i,item; if(mark0) item=L-listmark; for(i=mark+1;isize-1;i+) L-listi=L-listi+1; L-size-; return i; return FALSE;voi

8、d main() int p,n,x=0; sqList a,*b; b=Init_List(&a,ML); printf(listaddr=%dtsize=%dtMaxSize=%d,b-list,b-size,b-MAXSIZE); while(1) printf(n请输入值,0为完毕输入:); scanf(%d,&x); if(!x) break; printf(请输入插入位置:); scanf(%d,&p); Insert_List(b,x,p); printf(线性表为:n); Disp_List(b); while(1) printf(请输入查找值,输入0完毕查找操作:); sca

9、nf(%d,&x); if(!x) break; n=LocateElem_List(b,x); if(n0) printf(没找到n); else printf(又符合条件的值,位置为:%dn,n+1); while(1) printf(请输入删除值,输入0完毕查找操作:); scanf(%d,&x); if(!x) break; n=Delete_List1(b,x); if(n0) printf(没找到n); else printf(删除成功,线性表为:); Disp_List(b); while(1) printf(请输入删除值位置,输入o完毕查找操作:); scanf(%d,&p);

10、 if(!p) break; n=Delete_List2(b,p); if(p0) printf(位置越界n); else printf(线性表为:); Disp_List(b); 实验2 单链表的操作#include #include #define null 0typedef int ElemType; /* 字符型数据*/struct LNode ElemType data; struct LNode *next; void setnull(struct LNode *p);int length (struct LNode *p);ElemType get(struct LNode *

11、p,int i);void insert(struct LNode *p,ElemType x,int i);void dele(struct LNode *p,int i);void display(struct LNode *p);int locate(struct LNode *p,ElemType x);void main() struct LNode *head,*q; /*定义静态变量*/ int select,x1,x2,x3,x4; int i,n; int m,g; char e,y; setnull(&head); /*建立链表并设置为空表*/ printf(请输入数据长度

12、: ); scanf(%d,&n); for(i=1;inext; return(n);ElemType get(struct LNode *p,int i) int j=1; struct LNode *q=*p; while (jnext; j+; if(q!=null) return(q-data); else printf(位置参数不正确!n); return 0; int locate(struct LNode *p,ElemType x) int n=0; struct LNode *q=*p; while (q!=null&q-data!=x) q=q-next; n+; if(

13、q=null) return(-1); else return(n+1);void insert(struct LNode *p,ElemType x,int i) int j=1; struct LNode *s,*q; s=(struct LNode *)malloc(sizeof(struct LNode); s-data=x; q=*p; if(i=1) s-next=q; *p=s; else while(jnext!=null) q=q-next; j+; if(j=i-1) s-next=q-next; q-next=s; else printf(位置参数不正确!n); void

14、 dele(struct LNode *p,int i) int j=1; struct LNode *q=*p,*t; if(i=1) t=q; *p=q-next; else while(jnext!=null) q=q-next; j+; if(q-next!=null&j=i-1) t=q-next; q-next=t-next; else printf(位置参数不正确!n); if(t!=null) free(t);void display(struct LNode *p) struct LNode *q; q=*p; printf(单链表显示: ); if(q=null) printf(链表为空!); else if (q-next=null) printf(%dn,q-data); else while(q-next!=null) printf(%d-,q-data); q=q-next; printf(%d,q-data); printf(n);五、成绩评定优良中及格不及格出 勤内 容格 式创 新效 果总 评指导教师: 年 月 日

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1