数据结构C语言实现系列线性表Word文档下载推荐.docx

上传人:b****1 文档编号:4407957 上传时间:2023-05-03 格式:DOCX 页数:19 大小:19.81KB
下载 相关 举报
数据结构C语言实现系列线性表Word文档下载推荐.docx_第1页
第1页 / 共19页
数据结构C语言实现系列线性表Word文档下载推荐.docx_第2页
第2页 / 共19页
数据结构C语言实现系列线性表Word文档下载推荐.docx_第3页
第3页 / 共19页
数据结构C语言实现系列线性表Word文档下载推荐.docx_第4页
第4页 / 共19页
数据结构C语言实现系列线性表Word文档下载推荐.docx_第5页
第5页 / 共19页
数据结构C语言实现系列线性表Word文档下载推荐.docx_第6页
第6页 / 共19页
数据结构C语言实现系列线性表Word文档下载推荐.docx_第7页
第7页 / 共19页
数据结构C语言实现系列线性表Word文档下载推荐.docx_第8页
第8页 / 共19页
数据结构C语言实现系列线性表Word文档下载推荐.docx_第9页
第9页 / 共19页
数据结构C语言实现系列线性表Word文档下载推荐.docx_第10页
第10页 / 共19页
数据结构C语言实现系列线性表Word文档下载推荐.docx_第11页
第11页 / 共19页
数据结构C语言实现系列线性表Word文档下载推荐.docx_第12页
第12页 / 共19页
数据结构C语言实现系列线性表Word文档下载推荐.docx_第13页
第13页 / 共19页
数据结构C语言实现系列线性表Word文档下载推荐.docx_第14页
第14页 / 共19页
数据结构C语言实现系列线性表Word文档下载推荐.docx_第15页
第15页 / 共19页
数据结构C语言实现系列线性表Word文档下载推荐.docx_第16页
第16页 / 共19页
数据结构C语言实现系列线性表Word文档下载推荐.docx_第17页
第17页 / 共19页
数据结构C语言实现系列线性表Word文档下载推荐.docx_第18页
第18页 / 共19页
数据结构C语言实现系列线性表Word文档下载推荐.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数据结构C语言实现系列线性表Word文档下载推荐.docx

《数据结构C语言实现系列线性表Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据结构C语言实现系列线性表Word文档下载推荐.docx(19页珍藏版)》请在冰点文库上搜索。

数据结构C语言实现系列线性表Word文档下载推荐.docx

空间扩展为原来的2倍,并由p指针所指向,原内容被自动拷贝到p所指向的存储空间 

*p 

realloc(L->

list, 

L->

maxSize 

sizeof(elemType));

if(!

p){ 

分配失败则退出运行 

printf("

存储空间分配失败!

"

);

exit

(1);

}

list 

p;

使list指向新线性表空间 

把线性表空间大小修改为新的长度 

1.初始化线性表L,即进行动态存储空间分配并置L为一个空表 

initList(struct 

*L, 

ms)

{

检查ms是否有效,若无效的则退出运行 

if(ms 

0){

MaxSize非法!

执行此函数中止程序运行,此函数在stdlib.h中有定义 

ms;

设置线性表空间大小为ms 

size 

0;

malloc(ms 

list){

空间分配失败!

return;

2.清除线性表L中的所有元素,释放存储空间,使之成为一个空表 

clearList(struct 

if(L->

!

NULL){

free(L->

list);

3.返回线性表L当前的长度,若L为空则返回0 

sizeList(struct 

return 

4.判断线性表L是否为空,若为空则返回1, 

否则返回0 

emptyList(struct 

==0){

1;

else{

5.返回线性表L中第pos个元素的值,若pos超出范围,则停止程序运行 

getElem(struct 

pos)

if(pos 

|| 

pos 

>

size){ 

若pos越界则退出运行 

元素序号越界!

list[pos 

1];

返回线性表中序号为pos值的元素值 

6.顺序扫描(即遍历)输出线性表L中的每个元素 

traverseList(struct 

i;

for(i 

i++){

%d 

 

->

list[i]);

7.从线性表L中查找值与x相等的元素,若查找成功则返回其位置,否则返回-1 

findList(struct 

x)

list[i] 

== 

x){

-1;

8.把线性表L中第pos个元素的值修改为x的值,若修改成功返回1,否则返回0 

updatePosList(struct 

pos, 

若pos越界则修改失败 

1] 

x;

9.向线性表L的表头插入元素x 

inserFirstList(struct 

maxSize){

againMalloc(L);

i--){

list[i 

list[i];

list[0] 

++;

10.向线性表L的表尾插入元素x 

insertLastList(struct 

maxSize){ 

重新分配更大的存储空间 

list[L->

size] 

把x插入到表尾 

size++;

线性表的长度增加1 

11.向线性表L中第pos个元素位置插入元素x,若插入成功返回1,否则返回0 

insertPosList(struct 

1){ 

若pos越界则插入失败 

12.向有序线性表L中插入元素x, 使得插入后仍然有序*/

insertOrderList(struct 

i, 

j;

若数组空间用完则重新分配更大的存储空间 

顺序查找出x的插入位置 

if(x 

list[i]){ 

break;

从表尾到下标i元素依次后移一个位置, 

把i的位置空出来 

for(j 

j--)

list[j+1] 

list[j];

把x值赋给下标为i的元素 

*/ 

线性表长度增加1 

13.从线性表L中删除表头元素并返回它,若删除失败则停止程序运行 

deleteFirstList(struct 

temp;

if(L 

线性表为空,不能进行删除操作!

temp 

list[0];

i++)

list[i-1] 

size--;

14.从线性表L中删除表尾元素并返回它,若删除失败则停止程序运行 

deleteLastList(struct 

size];

返回原来表尾元素的值 

15.从线性表L中删除第pos个元素并返回它,若删除失败则停止程序运行 

deletePosList(struct 

pos越界则删除失败 

pos值越界,不能进行删除操作!

list[pos-1];

pos;

16.从线性表L中删除值为x的第一个元素,若成功返回1,失败返回0 

deleteValueList(struct 

从线性表中顺序查找出值为x的第一个元素 

x){ 

若查找失败,表明不存在值为x的元素,返回0 

if(i 

size){

删除值为x的元素L->

j++){

list[j-1] 

main()

a[10] 

{2, 

4, 

6, 

8, 

10, 

12, 

14, 

16, 

18, 

20};

L;

initList(&

L, 

5);

10;

insertLastList(&

a[i]);

insertPosList(&

11, 

48);

1, 

64);

getElem(&

1));

traverseList(&

L);

findList(&

10));

updatePosList(&

3, 

20);

3));

deleteFirstList(&

deleteLastList(&

deletePosList(&

;

7);

sizeList(&

L));

emptyList(&

clearList(&

#define 

NN 

12

MM 

20

以下是关于线性表链接存储(单链表)操作的16种算法 

sNode{ 

定义单链表结点类型 

data;

sNode 

*next;

1.初始化线性表,即置单链表的表头指针为空 

sNode* 

*hl)

*hl 

NULL;

2.清除线性表L中的所有元素,即释放单链表L中所有的结点,使之成为一个空表 

cp和np分别作为指向两个相邻结点的指针 

*cp, 

*np;

cp 

*hl;

遍历单链表,依次释放每个结点 

while(cp 

np 

cp->

next;

保存下一个结点的指针 

free(cp);

np;

置单链表的表头指针为空 

3.返回单链表的长度 

count 

用于统计结点的个数 

while(hl 

count++;

hl 

hl->

count;

4.检查单链表是否为空,若为空则返回1,否则返回0 

if(hl 

}else{

5.返回单链表中第pos个结点中的元素,若pos超出范围,则停止程序运行 

*hl, 

统计已遍历的结点个数 

1){

pos值非法,退出运行!

i++;

pos){

6.遍历一个单链表 

%5d"

data);

7.从单链表中查找具有给定值x的第一个元素,若查找成功则返回该结点data域的存储地址,否则返回NULL 

elemType* 

if(hl->

data 

&

8.把单链表中第pos个结点的值修改为x的值,若修改成功返回1,否则返回0 

hl;

while(p 

NULL){ 

查找第pos个结点 

i){

p->

9.向单链表的表头插入一个元素 

insertFirstList(struct 

*newP;

newP 

malloc(sizeof(struct 

sNode));

if(newP 

内存分配失败,退出运行!

newP->

把x的值赋给新结点的data域 

把新结点作为新的表头结点插入 

next 

newP;

10.向单链表的末尾添加一个元素 

内在分配失败,退出运行!

把x的值赋给新结点的data域,把空值赋给新结点的next域 

若原表为空,则作为表头结点插入 

if(*hl 

查找到表尾结点并完成插入 

while(p->

11.向单链表中第pos个结点位置插入元素为x的结点,若插入成功返回1,否则返回0 

insetPosList(struct 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2