顺 序 表
1.判断顺序表是否为空
int IsEmptySeqList(SeqList *list);
功能:
判断顺序表是否为空
参数:
list:顺序表的地址
返回值:
如果为空返回1
不为空返回0
int IsEmptySeqList(SeqList *list)
{
1.判断顺序表元素是否为空
2.为空返回1
3.非空返回0
}
2.删除指定位置的元素
DATATYPE DeleteSeqList(SeqList *list, int pos)
功能:
删除顺序表中指定位置的元素
参数:
list:顺序表的地址
pos:要删除元素的位置
返回值:
成功返回删除得到的数据
DATATYPE DeleteSeqList(SeqList *list, int pos)
{
DATATYPE data;
1.判断顺序表是否为空
if (IsEmptySeqList(list))
2.如果为空返回-1
return -1;
3.把第n个元素开始直到最后一个元素
依次向前挪动一位
data = list->head[i-1];
for (;i < list->clen;i++)
list->head[i-1] = list->head[i];
4.clen--
list->clen--;
5.返回获得的数据
return data;
}
3.查找
int FindSeqList(SeqList *list, DATATYPE data)
功能:
在顺序表中查找一个元素是否存在
参数:
list:顺序表的地址
data:要查找的数据
返回值:
存在返回1
不存在返回0
int FindSeqList(SeqList *list, DATATYPE data)
{
1.从第0个到最后一个元素遍历,判断data数据
是否存在
2.存在返回1
3.不存在返回0
}
4.修改
int ReviseSeqList(SeqList *list, DATATYPE old, DATATYPE new);
功能:
修改顺序表中的指定元素
参数:
old:要修改的元素
new:要修改成的元素
list:顺序表的地址
返回值:
成功返回0
int ReviseSeqList(SeqList *list, DATATYPE old, DATATYPE new);
{
1.找到old元素
2.修改成new数据
3.返回0
}
5.按位置添加元素
int PosInsertSeqList(SeqList *list, DATATYPE data, int pos);
功能:
在指定位置插入某个元素到顺序表中
参数:
list:顺序表地址
data:要插入的数据
pos:要插入数据的位置
返回值:
成功返回0
int PosInsertSeqList(SeqList *list, DATATYPE data, int pos);
{
1.判断是否能插入
2.从该位置开始到最后一个元素都要向后挪动一位
3.插入元素
4.clen++
5.返回0
}
链表
1.概念
表中的数据元素按照链式存储的方式构成的数据结构
叫做链表
2.链表结构
1.链表节点
typedef struct node
{
DATATYPE data;
struct node *next;
}LinkNode;
2.链表头
typedef struct list
{
LinkNode *head;
int clen;
int tlen;
}LinkList;
3.链表的操作
1.链表的创建
LinkList *CreateLinkList(int len);
功能:
创建一个链表头
参数:
len:最大能存放元素的个数
返回值:
成功返回链表头指针
LinkList *CreateLinkList(int len)
{
1.申请链表头空间
2.判断是否申请成功
3.清空链表头
4.对对应的元素赋值
5.返回链表头指针
}
2.链表的插入
int InsertLinkList(LinkList *list, DATATYPE data);
功能:
在链表中插入一个节点元素
参数:
list:要插入链表的地址
data:要插入链表的数据
返回值:
成功返回0
int InsertLinkList(LinkList *list, DATATYPE data)
{
1.判断链表是否存满
2.申请链表节点空间
3.对链表节点成员变量赋值
4.clen++
5.返回0
}
3.链表的查看
int ShowLinkList(LinkList *list)
{
1.定义一个指针指向第一个链表节点
2.打印p->data
3.让p指向相依个节点 p = p->next
4.循环2,3步的操作直到打印最后一个节点
5.返回0
}
4.链表的删除
int DeleteLinkList(LinkList *list, DATATYPE data)
功能:
删除链表中指定的元素
参数:
list:链表的地址
data:要删除的数据
返回值:
成功返回0
int DeleteLinkList(LinkList *list, DATATYPE data)
{
1.判断链表是否为空
2.定义一个指针指向前一个元素,定义另一个
指针指向后面的元素利用后面的指针遍历查找
要删除的元素
3.删除节点
4.clen--;
5.返回0
}
5.销毁
int DestroyLinkList(LinkList *list);
功能:
销毁一个链表
参数:
list:要销毁链表的地址
返回值:
成功返回0
int DestroyLinkList(LinkList *list)
{
1.list->head指向第一个节点的后一个节点
2.free掉第一个链表节点
3.循环2的操作直到链表中没有节点为止
4.返回0
}
6.查找
int FindLinkist(LinkList *list, DATATYPE data);
功能:
查找链表中是否存在data元素
参数:
list:链表的地址
data:查找的元素
返回值:
如果元素存在返回1
不存在返回0