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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

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

1、数据结构与算法实验线性表沈 阳 工 程 学 院学 生 实 验 报 告(课程名称: 数据结构与算法 )实验题目: 线性表 班 级 网本112班 学 号 2011414217 姓 名 樊鹏鹏 地 点 F606 指导教师 吕海华、祝世东 实 验 日 期 : 2012 年 9 月 27 日一、实验目的1 了解线性表的逻辑结构特性,以及这种特性在计算机内的两种存储结构。2 掌握线性表的顺序存储结构的定义及其C语言的实现。3 掌握线性表的链式存储结构单链表的定义及其C语言的实现。4 掌握线性表的基本操作二、实验环境Turbo C或是Visual C+三、实验内容与要求实验1 顺序表的操作请编制C程序,利用

2、顺序存储方式来实现下列功能:根据键盘输入数据建立一个线性表,并输出该线性表;然后根据屏幕菜单的选择,可以进行表的创建,数据的插入删除并在插入和删除数据后再输出线性表;最后在屏幕菜单中选择0,即可结束程序的运行。分析:当我们要在顺序表的第i个位置上插入一个元素时,必须先将线性表的第i个元素之后的所有元素一次后移一个位置,以便腾出一个位置,再把新元素插入到该位置。当要删除第i个元素时,也只需将第i个元素之后的所有元素前移一个位置。算法描述:对每个算法,都要写出算法的中文描述。本实验中要求分别写出在第i个(从1开始计数)结点前插入数据为x的结点、删除指定结点、创建一个线性表。打印线性表等的算法描述。

3、实验2 单链表的操作请编制C程序,利用链式存储方式来实现线性表的创建、插入、删除和查找等操作。具体地说,就是要根据键盘输入的数据建立一个单链表;然后根据屏幕菜单的选择,可以进行数据的插入或删除,并在插入或删除数据后,再输出单链表;最后在屏幕菜单中选择0,即可结束程序的运行。算法描述:本实验要求分别写出在单链表中第i(从1开始计数)个位置之后插入元素、创建单链表、在单链表中删除第i个位置的元素、顺序输出单链表的内容等的算法描述。四、实验过程及结果分析顺序表:#include #include #define SIZE 100int L=0;struct number long num;/*-创建

4、顺式线性表-*/struct number *creat(void) struct number *head,*p1; p1=head=(struct number*)malloc( SIZE * sizeof(struct number); scanf(%ld,&p1-num); for(;p1-num!=0;L+) p1+; scanf(%ld,&p1-num); return(head);/*-输出顺式线性表中的元素-*/void print(struct number*head) struct number *p; int s=L; p=head; if(p!=0) printf(n您

5、输入的数据为:n); for(;s0;p+,s-) printf(%ld ,p-num); /*-查找顺式线性表中的元素-*/void search(struct number *head) struct number *p; long num1; int n=0,s=0; p=head; printf(n请输入您要查找的数据:n); scanf(%ld,& num1); if(head!=0) for(;p-num!=0;p+) n+; if(p-num=num1) s=1; break; if(s=0) printf(n没有您所要查找的数据n); else printf(n找到您所需数据%

6、ld在表中第%d个n,num1,n);/*-插入顺式线性表的元素-*/struct number *insert(struct number*head) struct number *p1,*p2; int n=1; long num1; p1=p2=head; p2=p2+L-1; printf(n请输入您要插入的数据:n); scanf(%ld,&num1); if(num1num) for(p1=head;p1-num=p1;p2-) (p2+1)-num=p2-num; (p2+1)-num=num1; L+; return(head);/*-删除顺式线性表的元素-*/struct n

7、umber *del(struct number*head) struct number *p1,*p2; long num1; int n=1; p1=p2=head; printf(n请输入要删除的数据:n); scanf(%ld,&num1); p2=p2+L-1; for(;p1-num!=num1 & nL) printf(n没有您要删除的数据n); return(0); else for(;p1num=(p1+1)-num; L-; return(head); void main() struct number *head,*head1,*head2; int a; /*head=

8、creat(); print(head);*/ printf(n*n); printf( 按1:创建n); printf( 按2:插入n); printf( 按3:查找n); printf( 按4:删除n); printf( 按5:输出n); printf( 按0:退出n); printf(*n); scanf(%d,&a); while(a!=0) switch(a) case 1:printf(请创建顺序表:); head=creat();break; case 2:head1=insert(head);break; case 3:search(head);break; case 4:he

9、ad2=del(head);break; case 5:print(head); case 0:break; printf(n继续操作请输入,否则请按0退出:n); scanf(%d,&a); 图1图2链表:#include stdio.h#include malloc.htypedef struct node int data; struct node *next;LNode,*LinkList;int len;/*-创建链式线性表-*/LinkList CreatLink() int x,count=0; LinkList p,q,h; h=NULL; p=(LinkList)malloc

10、(sizeof(LNode); scanf(%d,&x); p-data=x; p-next=NULL; while(x!=0) count+; if(count=1) q=h=p; else q-next=p; q=p; p=(LinkList)malloc(sizeof(LNode); scanf(%d,&x); p-data=x; p-next=NULL; return h;/*-删除链式线性表的元素-*/LinkList del(LinkList h,int data) LinkList p1,p2; if(h=NULL) printf(n list null!n); return h

11、; p1=h; while(data!=p1-data&p1-next!=NULL) p2=p1; p1=p1-next; if(data=p1-data) if(p1=h) h=p1-next; else p2-next=p1-next; printf(delete:%ldn,data); len=len-1; else printf(%ld not been found!n,data); return(h);/*-输出链式线性表的元素-*/void PrintLink(LNode *h) LNode *p; p=h; while(p!=NULL) printf(%d ,p-data); p

12、=p-next; /*-计算链式线性表的长度-*/int LinkLen(LinkList h) LinkList p=h; int count=0; while(p!=NULL) count+; p=p-next; return count;/*-查找链式线性表中的元素-*/LinkList QueryLink(LinkList h,int x) LinkList q,p; q=p=h; while(p!=NULL) if(p-data=x) break; else q=p; p=p-next; if(p!=NULL) return q; else return NULL;/*-向链式线性表

13、插入元素-*/LinkList InsertLink(LinkList h,int i,int x) LinkList p,q; int j; p=(LinkList)malloc(sizeof(LNode); p-data=x; if(i=0) p-next=h; h=p; else q=h; j=1; while(q!=NULL & jnext; if(q!=NULL) p-next=q-next; q-next=p; else printf(no foundn); return h;void main() LinkList h,p; int x,a; printf(请按菜单进行操作!n)

14、; printf(*n); printf(按 1:创建链表n); printf(按 2:插入元素n); printf(按 3:链表长度n); printf(按 4:查找元素n); printf(按 5:删除元素n); printf(按 6:输出链表n); printf(按 0:退出运行n); printf(*n); printf(请选择操作:); scanf(%d,&a); while(a!=0) switch(a) case 1:printf(请输入:); h=CreatLink(); printf(创建链表成功!); break; case 2:printf(请输入要插入的元素:);sca

15、nf(%d,&x); h=InsertLink(h,1,x); break; case 3:len=LinkLen(h); printf(该链表的长度为:%d,len);break; case 4:printf(请输入要查找的元素:);scanf(%d,&x); p=QueryLink(h,x); if(p!=NULL) printf(find=%dn,p-next-data); else printf(no foundn); break; case 5: printf(n请输入要删除的元素:); scanf(%d,&x); if(x!=0) h=del(h,x);break; case 6: printf(输出链表:);PrintLink(h); break; case 0: break; printf(n继续操作请选择,退出请安0n); scanf(%d,&a); 图3图4五、成绩评定优良中及格不及格出 勤内 容格 式创 新效 果总 评指导教师: 年 月 日

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

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