实验一 线性表的基本操作 一、实验目的与基本要求1.掌握数据结构中的一些基本概念。数据、数据项、数据元素、数据类型和数据结构,以与它们之间的关系。2.了解数据的逻辑结构和数据的存储结构之间的区别与联系;数据的运算与数据的逻辑结构的关系。3.掌握顺序表和链表的基本操作:插入、删除、查找以与表的合并等运算。4.掌握运用 C 语言上机调试线性表的基本方法。二、实验条件1.硬件:一台微机2.软件:操作系统和 C 语言系统三、实验方法确定存储结构后,上机调试实现线性表的基本运算。四、实验容1.建立顺序表,基本操作包括:初始化,建立一个顺序存储的链表,输出顺序表,推断是否为空,取表中第 i 个元素,定位函数(返回第一个与 x 相等的元素位置),插入,删除。2.建立单链表,基本操作包括:初始化,建立一个链式存储的链表,输出顺序表,推断是否为空,取表中第 i 个元素,定位函数(返回第一个与 x 相等的元素位置),插入,删除。3.假设有两个按数据元素值非递减有序排列的线性表 A 和 B,均以顺序表作为存储结构。编写算法将 A 表和 B 表归并成一个按元素值非递增有序(允许值一样)排列的线性表 C。(可以利用将 B 中元素插入 A 中,或新建 C表)4.假设有两个按数据元素值非递减有序排列的线性表 A 和 B,均以单链表作为存储结构。编写算法将 A 表和 B 表归并成一个按元素值递减有序(即非递增有序,允许值一样)排列的线性表 C。五、附源程序与算法程序流程图1.源程序(1)源程序(实验要求 1 和 3)#include#include#include#define LIST_INIT_SIZE 100#define LISTINCREMENT 10typedef struct arr{int * elem;int length;int listsize;}Sqlist;void menu(); //菜单void InitList(Sqlist *p);// 创建线性表 void ShowList(Sqlist *p);// 输出顺序线性表 void ListDelete(Sqlist *p,int i,int &e);// 在顺序线性表中删除第 i 个元素,并用 e返回其值void ListInsert(Sqlist *p);// 在顺序线性表中第 i 个元素前插入新元素 evoid ListEmpty(Sqlist *p);// 推断 L 是否为空表void GetList(Sqlist *p,int i,int &e);// 用 e 返回 L 中第 i 个数据元素的值void ListInsert(Sqlist *p,int i,int e);bool compare(int a,int b);void LocateElem(Sqlist *L,int e);// 在顺序线性表 L 中查找...