当前位置:文档之家› 数据结构实验报告

数据结构实验报告

南京工程学院实验报告
操作的函数程序清单,分别用顺序表和链表结构完成,并在首页上表明团队名称、成员及个人的工作(函数),未来的成绩评定时将包含这一部分的团队成绩及个人的工作成绩。

一、实验目的
1.熟悉上机环境,进一步掌握语言的结构特点。

2.掌握线性表的顺序存储结构的定义及实现。

3.掌握线性表的链式存储结构——单链表的定义及实现。

4.掌握线性表在顺序存储结构即顺序表中的各种基本操作。

5.掌握线性表在链式存储结构——单链表中的各种基本操作。

二、实验内容
1.顺序线性表的建立、插入及删除。

2.链式线性表的建立、插入及删除。

三、实验步骤
1.建立含n个数据元素的顺序表并输出该表中各元素的值及顺序表的长度。

2.利用前面的实验先建立一个顺序表L={21,23,14,5,56,17,31},然后在第i个位置插入元素68。

3.建立一个带头结点的单链表,结点的值域为整型数据。

要求将用户输入的数据按尾插入法来建立相应单链表。

四、程序主要语句及作用(main函数程序清单)
程序1的主要代码(附简要注释)
#include<stdio.h>
#define MAXSIZE 1024
typedef int elemtype;
typedef struct{
elemtype vec[MAXSIZE];
int len;
}sequenlist;
elemtype geti(sequenlist s, int i);
elemtype deli(sequenlist *s,int i);
elemtype insi(sequenlist *s,int i,int b);
int main(int argc, char *argv[]){
int i,n,x;
sequenlist a;
printf("输入n(n>3):");
scanf("%d",&n);
printf("输入n个数:",n);
for(i=1;i<=n;i++)
{
scanf("%d",&a.vec[i]);
printf("i=%d,第i个元素的值为:%d\n",i,geti(a,i));
}
a.len=n;
printf("线性表的实际长度为:%d\n",a.len);
}
程序2的主要代码(附简要注释)
#include<stdio.h>
#define MAXSIZE 1024
typedef int elemtype;
typedef struct{
elemtype vec[MAXSIZE];
int len;
}sequenlist;
elemtype geti(sequenlist s, int i);
elemtype deli(sequenlist *s,int i);
elemtype insi(sequenlist *s,int i,int b);
int main(int argc, char *argv[]){
int i,n,x;
sequenlist a;
printf("输入n(n>3):");
scanf("%d",&n);
printf("输入n个数:",n);
for(i=1;i<=n;i++)
{
scanf("%d",&a.vec[i]);
printf("i=%d,第i个元素的值为:%d\n",i,geti(a,i));
}
a.len=n;
printf("线性表的实际长度为:%d\n",a.len);
//deli(&a,5);
insi(&a,3,209150923);
for(i=1;i<=a.len;i++)
printf("i=%d,第i个元素的值为:%d\n",i,geti(a,i));
printf("线性表的实际长度为:%d\n",a.len);
return 0;
}
elemtype geti(sequenlist s,int i)
{
return s.vec[i];
}
elemtype deli(sequenlist *s,int i)
{
int j;
for(j=i;j<s->len;j++)
{
s->vec[j]=s->vec[j+1];
}
s->len=s->len-1;
return 0;
}
elemtype insi(sequenlist *s,int i,int b)
{
int j;
for(j=s->len;j>i;j--)
{
s->vec[j+1]=s->vec[j];
}
s->vec[i]=b;
s->len=s->len+1;
return 0;
}
程序3的主要代码(附简要注释)
#include<stdio.h>
#include<stdlib.h>
typedef struct Node{
int data;
struct Node *next;
}Node,*Linklist;
Linklist Init_L( );
void Create_L(Linklist L);
void ListTraverse_L (Linklist L);
int main( ) {
Linklist L = NULL;
L = Init_L( );
Create_L(L);
ListTraverse_L (L);
}
Linklist Init_L( ){
Linklist s;
s = (Linklist) malloc (sizeof (Node) ); if (s){s->next = NULL; return s; } else { printf("空间不足"); return NULL; } }
void Create_L(Linklist L)
{int i,n,a;
char tmp ;
Linklist p;
printf ("请输入表的元素个数\n");
scanf ("%d", &n);
for (i = 0; i < n; i++){
printf("请输入第%d个元素\n",i); scanf("%d",&tmp);
p = (Node *)malloc (sizeof (Node) ); p->data = tmp;
p->next = (L)->next;
(L)->next = p;
}
}
void ListTraverse_L (Linklist L)
{ Linklist p;
p = L->next;
printf("顺序表的结点分别是:\n");
while(p) {
printf("%d\t",p->data);
p = p->next;
}
printf("\n");
}
五、程序运行结果截图
程序1
程序2
程序3
六、收获,体会及问题(写得越详细、越个性化、越真实越好,否则我不知道你做这个实验的心路历程,也就无法充分地判断你是否是独立完成的这个实验、你是否在做这个实验时进行了认真仔细地思考、通过这个实验你是否在实践能力上得到了提高)。

相关主题