软件技术基础上机实验2(数据结构)2007

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

实验二数据结构上机实验

⏹实验目的:

掌握线性结构中顺序表和链表的基本概念、基本操作和应用

⏹实验内容:

1.顺序表的插入、删除操作

a)在已经创建的顺序表中插入一个元素。从键盘读入元素值和插入位置,在指定

的位置前插入。(参考程序附后 insertl.c)

b)在已经创建的顺序表中删除一个元素。从键盘读入欲删除的元素位置,在指定

的位置删除元素。(参考程序附后 deletel.c)

2.使用单链表,把一个数组的各个元素插入到链表中,并以升序排列。排序完成后,对通过键盘输入的数据可插入到链表的适当位置,并保持链表的有序性。最后屏幕打印这个单链表的所有元素。(注:初始数组元素数据类型可是整数型,个数不少于10个。参考源码附后 list.c)

⏹实验报告:

1.源代码(包括主要结构、主要语句、函数注释说明)

2.运行结果(包括程序如何使用,输入数据和输出结果)

3.实验体会和问题分析

4.报告请以电子文档形式,上传至教师社区/课程列表中的“软件技术基础”(密

码:504)。文件名最好以学号加姓名命名。

顺序表的插入操作 insertl.c (程序需补充完整)

#include

#define MAXLENGTH 10

#define true 1

#define false 0

/*定义顺序表结构体类型,数据元素类型为整型*/

typedef struct list_type{

int data[MAXLENGTH];

int length;

}list_type;

/*初始化顺序表,程序补充完整*/

void init_table(list_type * table)

{

int i;

for(i = 0;i < MAXLENGTH;i++)

table->data[i] = -1;

;

return;

}

/*建立顺序表,键盘依次输入整数,-1退出*/

void create_table(list_type *table)

{

int x;

printf("input the a[%d]=",table->length);

scanf("%d",&x);

while(x != -1){

table->data[table->length] = x;

table->length++;

printf("input the a[%d]=",table->length);

scanf("%d",&x);

}

return;

}

/*输入插入数据元素和位置,从1开始*/

void get_element(int *x,int *l)

{

printf("please input the element x= ");

scanf(" %d",x);

printf("\n");

printf("the location of inserting l= ");

scanf("%d",l);

printf("\n");

return;

}

/* 在指定位置插入数据元素,从1开始 */

int insert_list(list_type *table,int new_node,int location) {

int i;

location = location - 1;

if (table->length >=MAXLENGTH)

{

printf("the list is full, can not insert.\n");

return(false);

}

if ((location<0) || (location>table->length))

{

printf("location is invalid value.\n");

return(false);

}

for(i = table->length-1; i >= location; i--)

{

;

}

;

;

return(true);

}

/*显示顺序表内容*/

void show_list(list_type *table)

{

int i;

for(i = 0; i < table->length; i++)

{

printf("%d, ",table->data[i]);

}

printf("\n");

}

/*主程序*/

void main()

{

int x;

int l;

list_type table;

init_table(&table);

create_table(&table);

show_list(&table);

/*输入插入数据元素和位置,位置-1退出*/

get_element(&x,&l);

while(l!=-1){

insert_list(&table,x,l);

printf("insert ok!\n");

show_list(&table);

get_element(&x,&l);

}

return;

}

顺序表的删除操作 deletel.c(程序需补充完整)#include

#define MAXLENGTH 10

/*定义顺序表结构体类型,数据元素类型为整型*/

typedef struct list_type{

int data[MAXLENGTH];

int length;

}list_type;

/*初始化顺序表*/

void init_table(list_type * table)

{

int i;

for(i = 0;i < MAXLENGTH;i++)

table->data[i] = -1;

;

return;

}

/*建立顺序表,键盘依次输入整数,-1退出*/

void create_table(list_type *table)

{

int x;

相关文档
最新文档