数据结构实验一顺序表的实现

发布 2019-04-28 16:16:15 阅读 6344

班级学号姓名分数

一、实验目的:

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.线...