数据结构实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
南京工程学院实验报告
操作的函数程序清单,分别用顺序表和链表结构完成,并在首页上表明团队名称、成员及个人的工作(函数),未来的成绩评定时将包含这一部分的团队成绩及个人的工作成绩。
一、实验目的
1.熟悉上机环境,进一步掌握语言的结构特点。
2.掌握线性表的顺序存储结构的定义及实现。
3.掌握线性表的链式存储结构——单链表的定义及实现。
4.掌握线性表在顺序存储结构即顺序表中的各种基本操作。
5.掌握线性表在链式存储结构——单链表中的各种基本操作。
二、实验内容
1.顺序线性表的建立、插入及删除。
2.链式线性表的建立、插入及删除。
三、实验步骤
1.建立含n个数据元素的顺序表并输出该表中各元素的值及顺序表的长度。
2.利用前面的实验先建立一个顺序表L={21,23,14,5,56,17,31},然后在第i个位置插入元素68。
3.建立一个带头结点的单链表,结点的值域为整型数据。要求将用户输入的数据按尾插入法来建立相应单链表。
四、程序主要语句及作用(main函数程序清单)
程序1的主要代码(附简要注释)
#include
#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
#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->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
#include
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)