《数据结构》上机实验一资料

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

青岛理工大学

数据结构课程实验报告

课程名称数据结构班级软件131 实验日期 4.15姓名学号实验成绩

实验名称线性表的顺序表示与链式表示

实验目的及要求实验目的

1.加深理解线性表的顺序表示与链式表示的意义和区别,掌握用它们表示时各基本操作的设计与实现。

2.学会定义线性表的顺序存储类型和链式存储类型,实现C程序的基本结构,对线性表的一些基本操作和具体的函数定义。

3.掌握线性表的基本操作(初始化、建立、插入、删除、遍历等)。

4.掌握对多函数程序的输入、编辑、调试和运行过程。

5.进一步熟练C语言的使用,特别是指针和链表的使用。能在实际应用背景下恰当选择顺序存储和链式存储。

实验要求

1.预习C语言中的结构的定义和基本操作方法

2.对线性表的每个基本操作用单独的函数实现

3.编写完整程序完成下面的实验内容并上机运行

4.整理并上交实验报告

实验环境硬件平台:普通的PC机

软件平台:Windows 2003操作系统编程环境:VisualC++

实验内容1.分别建立包含10个数据元素的顺序线性表和链式线性表;

2.从键盘输入一个数据元素和插入位置k,将元素插入到线性表中第k(包含0号位置)个位置;

3.从键盘输入一个数据元素关键字或位置k(包含1号位置),从线性表中删除相应数据元素;

4.能完成查找功能;

5.给出程序及插入、删除前和插入、删除后线性表结果。

//创建顺式线性表

struct number *creat(void)

{

struct number *head,*p1;

p1=head=(struct number*)malloc( SIZE * sizeof(struct number));

scanf("%ld",&p1->num);

for(;p1->num!=0;L++)

{

算法描述及实验步骤

p1++;

scanf("%ld",&p1->num);

}

return(head);

}

//输出顺式线性表中的元素

void print(struct number*head)

{

struct number *p;

int s=L;

p=head;

if(p!=0)

{

printf("\n您输入的数据为:\n");

for(;s>0;p++,s--)

printf("%ld ",p->num);

}

}

//查找顺式线性表中的元素

void search(struct number *head)

{

struct number *p;

long num1;

int n=0,s=0;

p=head;

printf("\n请输入您要查找的数据:\n");

scanf("%ld",& num1);

if(head!=0)

for(;p->num!=0;p++)

{

n++;

if(p->num==num1)

{

s=1;

break;

}

}

if(s==0)

printf("\n没有您所要查找的数据\n");

else

printf("\n找到您所需数据'%ld'在表中第%d个\n",num1,n); }

//插入顺式线性表的元素

struct number *insert(struct number*head)

{

struct number *p1,*p2;

int n=1;

long num1;

p1=p2=head;

p2=p2+L-1;

printf("\n请输入您要插入的数据:\n");

scanf("%ld",&num1);

if(num1num)

{

for(p1=head;p1->num

n++;

for(;p2>=p1;p2--)

(p2+1)->num=p2->num;

}

(p2+1)->num=num1;

L++;

return(head);

}

//删除顺式线性表的元素

struct number *del(struct number*head)

{

struct number *p1,*p2;

long num1;

int n=1;

p1=p2=head;

printf("\n请输入要删除的数据:\n");

scanf("%ld",&num1);

p2=p2+L-1;

for(;p1->num!=num1 && n<=L;p1++) n=n+1;

if(n>L)

{

printf("\n没有您要删除的数据\n");

return(0);

}

else

{

for(;p1<=p2;p1++)

p1->num=(p1+1)->num;

L--;

return(head);

}

}

相关文档
最新文档