您的位置:首页 > 理论基础 > 数据结构算法

数据结构学习之顺序表(二)

2016-01-22 13:44 127 查看
顺 序 表

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: