/*【常见操作的函数】*/
Status InitList_Sq(SqList &L);//【1】、构造一个空的线性表
Status DestoryList(SqList &L);//【2】、销毁已存在的线性表L
Status ClearList(SqList &L);//【3】、将线性表重置为空表
Status ListEmpty(SqList L);//【4】、判断线性表是否为空表,若是返回TRUE,反之返回FALSE
Status GetElem(SqList L,int i,ElemType *e);//【5】、用e返回线性表L中第 i 个元素,i的范围为1<= i <= L.length
int LocateElem(SqList L,ElemType e,Status(*compare)(ElemType,ElemType));
// 【6】、在顺序线性表中查找第1个值与e满足compare的元素的位序
Status PriorElem(SqList L,ElemType cur_e,ElemType &pre_e);
//【7】、若cur_e是线性表L中的数据元素且不是第一个,则用pre_e返回他的前驱;否则操作失败,pre_e无定义
Status NextElem(SqList L,ElemType cur_e,ElemType *next_e);
//【8】、若cur_e是线性表L中的数据元素且不是最后一个,则用next_e返回他的后继;否则操作失败,next_e无定义
Status ListInsert_Sq(SqList &L,int i,ElemType e);
//【9】、在顺序表第I个位置之前插入新的元素e
void CreatList_Sq(SqList &L,int n);
//【10】、表尾插入法建立一个顺序储存的线性表
Status ListDelete_Sq(SqList &L,int i,ElemType &e);
//【11】、算法2.5 在顺序线性表L中删除第I个元素,并用e返回元素的值,L的长度减1
(2)、操作执行代码
A、头文件
#include<stdlib.h>/*atoi()*/#include<malloc.h>/*malloc()等*/#include<memory.h>#include<tchar.h>#include<iostream.h>#include<string.h>#include<ctype.h>#include<limits.h>/*INT_MAX等*/#include<stdio.h>/*EOF(=^Z或F6),NULL*/#include<io.h>/*eof()*/#include<math.h>/*floor(),ceil(),abs()*/#include<process.h>/*exit()*/#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1/*infeasible*/#define LIST_INIT_SIZE 100/*list_init_size线性表存储空间的初始分配量*/#define LIST_INCREMENT 10 /*list_increment线性表存储空间的分配增量*/typedefint Status;/*Status是函数的类型,其值是函数结果状态代码,如OK等*//* #define OVERFLOW -2 因为在math.h中已定义OVERFLOW的值为3,故去掉此行*/typedefint Boolean;/*Boolean是布尔类型,其值是TRUE或FALSE*/typedefint ElemType;typedefstruct{
ElemType *elem;//存储空间基址int length;//当前长度int listsize;//当前分配的存储器容量}SqList;/*【常见操作的函数】*/
Status InitList_Sq(SqList &L);//【1】、构造一个空的线性表
Status DestoryList(SqList &L);//【2】、销毁已存在的线性表L
Status ClearList(SqList &L);//【3】、将线性表重置为空表
Status ListEmpty(SqList L);//【4】、判断线性表是否为空表,若是返回TRUE,反之返回FALSE
Status GetElem(SqList L,int i,ElemType *e);//【5】、用e返回线性表L中第 i 个元素,i的范围为1<= i <= L.lengthintLocateElem(SqList L,ElemType e,Status(*compare)(ElemType,ElemType));// 【6】、在顺序线性表中查找第1个值与e满足compare的元素的位序
Status PriorElem(SqList L,ElemType cur_e,ElemType &pre_e);//【7】、若cur_e是线性表L中的数据元素且不是第一个,则用pre_e返回他的前驱;否则操作失败,pre_e无定义
Status NextElem(SqList L,ElemType cur_e,ElemType *next_e);//【8】、若cur_e是线性表L中的数据元素且不是最后一个,则用next_e返回他的后继;否则操作失败,next_e无定义
Status ListInsert_Sq(SqList &L,int i,ElemType e);//【9】、在顺序表第I个位置之前插入新的元素evoidCreatList_Sq(SqList &L,int n);//【10】、表尾插入法建立一个顺序储存的线性表
Status ListDelete_Sq(SqList &L,int i,ElemType &e);//【11】、算法2.5 在顺序线性表L中删除第I个元素,并用e返回元素的值,L的长度减1/*【显示函数】*/voidListPrint(SqList L);/*显示函数*//*【元素之间关系判定函数】*/
Status comp(ElemType c1,ElemType c2);/*【1】、数据元素判定函数(平方关系)*/intequal(ElemType c1,ElemType c2);/*【2】、判断是否相等函数*/