数据结构
Last updated
Last updated
InitList(&L)
//构造一个空的线性表
DestroyList(&L)
//线性表存在了,消耗一个线性表
ClearList(&L )
//清空线性表中的内容
ListEmpty(L)
//判断线性表是否为空
ListLength(L)
//返回线性表的长度
GetElem(L,i,&e)
//返回线性表i位置上的元素值,通过e返回
PriorElem(L,cur_e,&pre_e)
//如果cur_e是线性表中的元素,而且不是第一个,那么我们就可以返回该元素前一个元素的值
NextElem(L,cur_e,&next_e)
//如果cur_e是线性表中的元素,而且不是最后一个,就返回它下一个元素的值
Listinsert(&L,i,e)
//如果线性表存在了,而且i符合条件,则在i位置插入一个元素
ListDelete(&L,i)
//删除i位置上的元素
ListDelete_data(&L,e,order)
//删除指定的元素e,order决定是删除一个,还是全部。
Connect_two_List(L_a,L_b,&L_c)
//连接两个线性表,除去重复的内容
print(L)
//打印线性表//扩充容量的步伐
#define sizestep 10
//开始的容量的大小
#define startsize 100
//为了便于扩展,我们这里使用类型别名,
//我们使用最简单的int型作为一个范例
typedef int Elemtype;
struct List {
//数据
Elemtype * data;
//长度
int length;
//初始容量
int size;
};
//创建一个空的线性表
void InitList(List &newList) {
//初始容量为startsize
newList.size = startsize;
//首先开辟空间
newList.data = new Elemtype[newList.size];
//空表,长度是0
newList.length = 0;
}//线性表存在了,现在要销毁线性表
void DestroyList(List &newList) {
newList.length = 0;
newList.data = 0;
//一定要先释放堆内存(赋值为0,就是释放内存了?)
delete[] newList.data;
//每次释放堆内存后,并将对应的指针赋予NULL是一个良好的习惯
newList.data = NULL;
}//线性表存在了,但是现在想清空整个线性表
void ClearList(List &newList) {
newList.length = 0;
//一定要先释放堆内存
delete[] newList.data;
//没此释放堆内存后,并将对应的指针赋予NULL是一个良好的习惯
newList.data = NULL;
//重新为存放元素的变量开辟一个新的堆内存
newList.data = new Elemtype[newList.size];
}//判读线性表是否为空
bool ListEmpty(List newList) {
return newList.length;
}//返回线性表的长度
int ListLength(List newList) {
return newList.length;
}//返回线性表上某个位置上的元素的值,记住我们的位置是从1开始计算的。????
void GetElem(List newList, int i, Elemtype &e) {
if (ListEmpty(newList)) {
cout << "当前线性表是空表" << endl;
return;
}
if (i<1 || i>newList.length) {
cout << "当前位置超出了线性表的范围" << endl;
return;
}
e = newList.data[i - 1];
}