在此只为记录我个人学习数据结构的一些内容,为了让自己更理解,而不是仅限于读书本所学,希望对我个人有所帮助。如果有幸有人浏览我的文章,望指出错误,谢谢~~
- 线性表的定义和基本操作
- 顺序表
- 定义
- 插入
- 删除
- 按值查找
- 按位查找
- 单链表
- 初始化
- 插入
- 删除
- 按值查找
- 按位查找
- 建立
- 双链表
- 定义
- 插入
- 删除
- 循环单链表
- 循环双链表
- 静态链表
定义:线性表是具有相同数据类型的n个数据元素的有限序列。(相同数据类型即代表,每个元素存储空间大小一样。)
基本操作: (&即为函数需要返回值时使用)
- InitList(&L):初始化线性表
- Empty(L):判断线性表是否为空,空返回T,否则返回F
- ListInsert(&L,i,e):插入,在表L中的第i个位置,插入元素e
- ListDelete(&L,i,&e):删除,删除表L中第i个位置的元素e,并返回e的值
- LocateElem(L,e):按值查找,查找表L中的元素e
- GetElem(L,i):按位查找,查找表L中,第i位元素
- PrintList(L):按先后顺序输出表L的值
- Length(L):返回表的长度
- DestroyList(&L):销毁表L
分类:
按照存储结构,可分为顺序存储和链式存储,顺序存储即顺序表。链式存储分为单链表,双链表,循环单链表,循环双链表,静态链表。
顺序表 定义
//顺序表定义
#define MaxSize 20
typedef struct {
int data[MaxSize]; //存储数据元素
int length; //顺序表长
}SqList;
插入
//插入
bool InsertList(SqList &L, int i, int e) {
if (i<1||i>length++)
{
return false;
}
if (L.length>=MaxSize)
{
return false;
}
for (int j = L.length; j >= i; j--)
{
L.data[j] = L.data[j - 1];
}
L.data[i-1] = e;
L.length++;
return true;
}
删除
//删除
bool DeleteList(SqList &L, int i, int &e) {
if (i<1 || i>length)
{
return false;
}
e = L.data[i - 1];
for (int j = i; j < L.length; j++)
{
L.data[j - 1] = L.data[j];
}
L.length--;
return true;
}
按值查找
//按值查找(输出该元素是第几个)
int LocateElem(SqList L, int e) {
int i;
for ( i = 0; i
if (L.data[i]==e)
{
return i++;
}
}
return true;
}
按位查找
//按位查找(输出值)
bool GetElem(SqList L, int i) {
return L.data[i-1];
}
单链表 初始化 插入 删除 按值查找 按位查找 建立
双链表 定义 插入 删除
循环单链表
循环双链表
静态链表



