数据结构实验一

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

实验01顺序表的基本操作

实验学时:2学时

实验类型:上机

背景知识:顺序表的插入、删除及应用。

目的要求:

1.掌握顺序存储结构的特点。

2.掌握顺序存储结构的常见算法。

实验内容:

编写一个完整的程序,实现顺序表的生成、插入、删除、输出等基本运算。

(1)建立一个顺序表,含有n个数据元素。

(2)输出顺序表。

(3)在顺序表中删除值为x的结点或者删除给定位置i的结点。

(4)实现把该表中所有奇数排在偶数之前,即表的前面为奇数,后面为偶数。

(5)输入整型元素序列,利用有序表插入算法建立一个有序表。

(6)*利用算法5建立两个非递减有序表A和B,并把它们合并成一个非递减有序表C。

(7)在主函数中设计一个简单的菜单,分别测试上述算法。

(8)*综合训练:

利用顺序表实现一个班级学生信息管理(数据录入、插入、删除、排序、查找等)。

实验说明:

1.请构建多文件程序,算法1至算法6对应的函数原型声明存放在头文件SqList.h中,对应的函数实现存放在源文件SqList.c中;main()函数存放在另一个源文件中,该文件包含头文件SqList.h即可。

2.类型定义

#define MAXSIZE 100 //表中元素的最大个数

typedefintElemType; //元素类型

typedefstruct

{

ElemType*elem; //线性表

int length; //表的实际长度

intlistsize; //当前分配的存储容量

}SqList; //顺序表的类型名

3.建立顺序表时可利用随机函数自动产生数据。

注意问题:

1、插入、删除时元素的移动原因、方向及先后顺序。

2、理解函数形参与实参的传递关系。

部分源代码:

DS.h

#include

#include

#include

#include

#define TRUE 1

#define FALSE 0

#define OK 1

#define ERROR 0

typedefint Status;

SqList.h

#ifndef SQLIST_H_INCLUDED

#define SQLIST_H_INCLUDED

#include "DS.h"

typedefintElemType;

typedefstruct

{

ElemType *elem;

int length;

intlistsize;

}SqList;

void menu();

Status InitList_Sq(SqList&L, int n);/*初始化顺序表*/

Status CreateList_Sq(SqList&L);/*建立顺序表*/

void PrintList_Sq(SqList L);/*输出顺序表*/

Status DeleteList_Sq(SqList&L,inti,ElemType&e);/*删除第i个元素*/

Status DeleteListX_Sq(SqList&L,ElemType x);/*删除值为x的元素*/

Status AdjustList_Sq(SqList&L);/*奇数排在偶数之前*/

Status OrderList_sq(SqList&L, int n);/*插入法生成递增有序表*/

void MergeList_Sq(SqList La, SqListLb, SqList&Lc );/*两个非递减有序表A和B,并把它们合并成一个非递减有序表C*/

#endif // SQLIST_H_INCLUDED

SqList.cpp

#include "SqList.h"

void menu()

{

printf("\t\t\t 顺序表基本操作\n\n");

printf("\t\t\t1.建立顺序表\n");

printf("\t\t\t2.遍历顺序表\n");

printf("\t\t\t3.删除第i个元素\n");

printf("\t\t\t4.删除值为x 的元素\n");

printf("\t\t\t5.奇数排在偶数之前\n");

printf("\t\t\t6.插入法生成递增有序表\n");

printf("\t\t\t7.两个非递减有序表La和Lb合并成非递减有序表Lc\n"); printf("\t\t\t0.退出\n\n");

}

/*初始化顺序表*/

Status InitList_Sq(SqList&L, int n)

{

L.elem=(ElemType*)malloc(n*sizeof(ElemType));

if(!L.elem) exit(OVERFLOW);

L.length=0;

L.listsize=n;

return OK;

}

/*建立顺序表*/

Status CreateList_Sq(SqList&L)

{

}

/*输出顺序表*/

void PrintList_Sq(SqList L)

{

}

/*删除第i个元素*/

Status DeleteList_Sq(SqList&L,inti,ElemType&e)

{

相关文档
最新文档