软件技术基础上机实验2(数据结构)2007
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;