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

上传人:woxinch****an2018 文档编号:39301179 上传时间:2018-05-14 格式:DOC 页数:15 大小:108.50KB
返回 下载 相关 举报
数据结构与算法实验报告-线性表_第1页
第1页 / 共15页
数据结构与算法实验报告-线性表_第2页
第2页 / 共15页
数据结构与算法实验报告-线性表_第3页
第3页 / 共15页
数据结构与算法实验报告-线性表_第4页
第4页 / 共15页
数据结构与算法实验报告-线性表_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《数据结构与算法实验报告-线性表》由会员分享,可在线阅读,更多相关《数据结构与算法实验报告-线性表(15页珍藏版)》请在金锄头文库上搜索。

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

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

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

4、序表:#include #include #define SIZE 100int L=0;struct numberlong num;/*-创建顺式线性表-*/struct number *creat(void)struct number *head,*p1;p1=head=(struct number*)malloc( SIZE * sizeof(struct number);scanf(“%ld“,for(;p1-num!=0;L+)p1+;scanf(“%ld“,return(head);/*-输出顺式线性表中的元素-*/void print(struct number*head)str

5、uct number *p;3int s=L;p=head;if(p!=0)printf(“n 您输入的数据为: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“,if(head!=0)for(;p-num!=0;p+)n+;if(p-num=num1)s=1;break;if(s=0)printf(“n 没

6、有您所要查找的数据n“);4elseprintf(“n 找到您所需数据%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“,if(num1num)for(p1=head;p1-num=p1;p2-)(p2+1)-num=p2-num;(p2+1)-num=num1;L+;return(head);/

7、*-删除顺式线性表的元素-*/struct number *del(struct number*head)struct number *p1,*p2;long num1;int n=1;5p1=p2=head;printf(“n 请输入要删除的数据:n“);scanf(“%ld“,p2=p2+L-1;for(;p1-num!=num1 return(0);elsefor(;p1num=(p1+1)-num;L-;return(head);void main()struct number *head,*head1,*head2;int a;/*head=creat();print(head);*

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

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

10、de);scanf(“%d“,p-data=x;p-next=NULL;while(x!=0)8count+;if(count=1)q=h=p;elseq-next=p;q=p;p=(LinkList)malloc(sizeof(LNode);scanf(“%d“,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;p1=h;while(data!=p1-datap1=p1-

11、next;9if(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=p-next;/*-计算链式线性表的长度-*/int LinkLen(LinkList h)LinkList p=h;in

12、t count=0;while(p!=NULL)10count+;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;elseq=p;p=p-next;if(p!=NULL)return q;elsereturn NULL;/*-向链式线性表插入元素-*/LinkList InsertLink(LinkList h,int i,int x)LinkList p,q;int j;11p=(LinkL

13、ist)malloc(sizeof(LNode);p-data=x;if(i=0)p-next=h;h=p;elseq=h;j=1;while(q!=NULL if(q!=NULL)p-next=q-next;q-next=p;elseprintf(“no foundn“);return h;void main()LinkList h,p;int x,a;12printf(“请按菜单进行操作!n“);printf(“*n“);printf(“按 1:创建链表n“);printf(“按 2:插入元素n“);printf(“按 3:链表长度n“);printf(“按 4:查找元素n“);print

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

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号