班级学号姓名分数
一、实验目的:
1. 熟悉线性表的基本运算在两种存储结构(顺序结构和链式结构)上的实现;
2. 以线性表的各种操作的实现为重点;
3. 通过本次学习帮助学生加深c语言的使用,掌握算法分析方法并对已经设计出的算法进行分析,给出相应的结果。
二、实验要求:
编写实验程序,上机运行本程序,保存程序的运行结果,结合程序进行分析并写出实验报告。
三、实验内容及分析:
1.顺序表的建立。
建立一个含n个数据元素的顺序表并输出该表中各元素的值及顺序表的长度。
程序如下:头文件的内容如下:
#include<>
#include<>
#define list_init_size 100
#define listincrement 10
#define true 1
#define false 0
#define ok 1
#define error 0
#define infeasible -1
#define overflow -2
typedef int elemtype;
typedef int status;
typedef struct//if
q=&(l->elem[i-1]);q为插入位置。
for(p=&(l->elem[l->length-1]);p>=q;--p) *p+1)=*p;
插入位置及以后的元素右移。
*q=e插入e
++l->length; /表长增1
return ok;
//listinsert_sq
int main()
int n,i,x;
sqlist *l,a;
l=&a;initlist_sq(l);
printf("输入要建立的线性表l得长度:")
scanf("%d",&n);
l->length=n;
creatlist_sq(l,n);
printf("插入元素之前线性表l的长度是:%d",l->length);
printf("插入元素之前线性表l中的元素是:")
for(i=0;ilength;i++)
printf("%5d",l->elem[i]);
printf("输入要插入元素的位置:")
scanf("%d",&i);
printf("输入要插入的元素的值:")
scanf(" %d",&x);
if(listinsert_sq(l,i,x)>0)
//ifelse
printf("不能插入这个元素!");
getchar();
运行结果:4. 单链表的实现。
新建链表,生成一个有一定结点的链表,并且顺序输出。
程序**:#include""
#include""
#include""
#define null 0
#define max 100 //最多元素个数。
#define length sizeof(struct node)
typedef int elem ; 数据元素类型。
/单链表实现线性表。
struct node
elem data; /数据域。
struct node *next; /指针域。
typedef struct node node;
typedef struct node *linklist;
/初始化链表,产生一个空链表。
linklist initlist()
/返回空链表的头指针。
linklist head;
head=null;
return head;
/新建链表,生成一个有一定结点的链表。
linklist createlist()
/返回新链表的首地址(指针)
linklist head=null,p,q;
int n,i;
elem temp;
dowhile(n<1 ||n>max);
for(i=0;i
else不是第一个结点,则结点放到结尾并且,尾指针后移。
return head; /返回新链表的首地址(指针)
/遍历打印链表。
int printlist(linklist h)
/返回打印结果,0表示无数据,1表示成功打印完成。
linklist pt=h;
if(pt==null) /没有数据直接返回。
while(pt结点不为空就打印结点内容。
printf("");
return 1;
/求的链表的长度。
int listlength(linklist h)
/求的链表长度,返回链表长度,若链表为空则返回0
linklist pt=h;
int len=0初始化计数器为0
while(pt
return len返回链表长度。
/向链表链表尾部添加结点,无输入。
linklist addnode(linklist h,elem e)
linklist head,pt,p;
pt=head=h指向起始结点。
p=(linklist)malloc(length); 开辟结点空间。
p->data=e向结点数据赋值。
p->next=null结点后继指向空。
if(pt==null若链表为空,直接作为第一个结点。
head=p;
else若不为空,将结点插在最后。
数据结构实验报告 2 1 线性表 顺序表实现
实验2.1 线性表 顺序表实现 的基本操作及其应用。一 实验目的。1 帮助读者复习c语言程序设计中的知识。2 熟悉线性表的逻辑结构。3 熟悉线性表的基本运算在顺序表结构上的实现。4 掌握顺序表的存储结构形式及其描述和基本运算的实现。二 实验内容。问题描述 实现顺序表的建立 求长度,取元素 修改元素 ...
数据结构实验一顺序表问题及实验报告Copy
实验一顺序表问题。实验报告 顺序表的查找 插入与删除。设计算法,实现线性结构上的顺序表的产生以及元素的查找 插入与删除。具体实现要求 1.从键盘输入10个整数,产生顺序表,并输出结点值。调试数据 9 8 7 6 5 4 3 2 1 2.从键盘输入1个整数,在顺序表中查找该结点。若找到,输出结点的位置...
数据结构实验数组
crosslist ma int z 主函数 void main creatmatrix ma out m ma main 十字链表的输出 void out m crosslist m printf printf 打回车键,返回。ch getchar void creatmatrix crossli...
数据结构实验六图
1 掌握图的邻接矩阵和邻接表表示。2 掌握图的深度优先和广度优先搜索方法 3 理解图的应用方法。1 阅读并运行下面程序,根据输入写出运行结果。include define n 20 define true 1 define false 0 int visited n typedef struct 队...
数据结构实验队列 附程序
实验三队列。一 实验目的。1.了解队列的特性。2.掌握队列的顺序表示和实现。3.掌握队列的链式表示和实现。二 实验内容。实验3.3队列的顺序表示和实现。编写一个程序实现顺序队列的各种基本运算 采用循环队列 并在此基础上设计一个主程序,完成如下功能 1 初始化队列。2 建立顺序队列。3 入队。4 出队...
数据结构算法编程实现样例详解
请仔细阅读,建议打印。注意比较细节的差异,关于指针问题请看 难点答疑 难点答疑 关于c c 语言中的结构体与指针。1.结构体和指针的引入原因。我们已经知道数组,它用来保存线性数据,但是它有许多缺点 数组的大小是固定的,在程序运行期间是不能改变的。我们在定义数组时必须足够大,保证程序运行时不会溢出。但...
数据结构作业 线性表
1简述以下算法的功能 1 statusa linkedlistl p next q p q q p next 当相邻元素相等时删除多余元素。else while delete equal void reverse sqlist a 顺序表的就地逆置。for i 1,j reverse void li...
数据结构习题2线性表
1.一个向量 即一批地址连续的存储单元 第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是 a.110 b.108 c.100 d.120 2.线性表的顺序存储结构是一种 的存储结构,而链式存储结构是一种 的存储结构。a 随机存取 b 索引存取 c 顺序存取 d 散列存取。3.线...