数据结构实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;jlen;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)

相关文档
最新文档