用C语言设计顺序表的相关函数库Word文件下载.docx
- 文档编号:16968139
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:10
- 大小:44.76KB
用C语言设计顺序表的相关函数库Word文件下载.docx
《用C语言设计顺序表的相关函数库Word文件下载.docx》由会员分享,可在线阅读,更多相关《用C语言设计顺序表的相关函数库Word文件下载.docx(10页珍藏版)》请在冰豆网上搜索。
2数据库中的函数
2.1函数库中函数清单
在此课程设计中主要是设计顺序表的函数库,以便于调用,其函数清单如表2-1所示。
表2-1顺序表函数库清单
函数声明
功能声明
intInsert_Seqlist();
插入一个元素到顺序表中,若空间已满及插入位置无效报错,否则插入成功。
intDelete_Seqlist();
删除顺序表中的一个元素,若表为空及删除位置不合法报错,否则删除成功。
intLocate_Seqlist();
若查找元素存在,则返回元素存储位置。
intGet_Seqlist();
若查找元素存在,则返回元素下标。
voidprint();
输出顺序表中的所有元素。
2.2函数实现的具体算法列举
(1)插入函数:
intInsert_Seqlist(Seqlist*L,inti,datatypee)
{intj;
if(L->
len==MAXSIZE-1)
{printf("
表满溢出\n"
);
return-1;
}/*表空间已满,不能插入*/
if(i<
1||i>
L->
len+2)/*检查插入位置i是否有效*/
{printf("
位置错\n"
return0;
}
for(j=L->
len;
j>
=i-1;
j--)
L->
data[j+1]=L->
data[j];
/*节点往后移动一个位置*/
data[i-1]=e;
/*插入新元素e*/
len++;
/*len仍指向最后一个元素*/
return1;
/*插入操作成功,返回*/
(2)删除函数:
intDelete_Seqlist(Seqlist*L,inti)
{
intj;
len+1)/*检查空表及删除位置的合法性*/
不存在第d%个元素\n,i"
for(j=i;
j<
j++)
data[j-1]=L->
/*向前移动一个位置*/
len--;
/*删除成功*/
(3)取出一个元素函数:
intGet_Seqlist(Seqlist*L,inti)
len+1)/*检查查找位置的合法性*/
{printf("
不存在第d%个元素\n"
i);
}/*查找元素不存在*/
elsereturnL->
data[i-1];
/*查找成功,返回该元素下标*/
3课程设计思路
一般地说,其过程如下:
a.分析顺序表特点
b.分析顺序表功能以及操作
c.设计函数库
d.制定调试计划:
初步的调试计划
e.编写主函数,方面后面的测试
f.制定完整程序的测试计划
g.书写文档:
系统说明
h.复核和审查:
从技术的角度审查,从管理的角度审查。
3.1分析顺序表
(1)顺序表的优点:
方法简单,各种高级语言中都有数组,容易实现;
逻辑上相邻,物理上也相邻,所以不需要指针来体现数据元素间的逻辑关系,不增加额外的存储开销;
顺序表具有按序号随机访问的特点,采取直接存取结构,若提供序号访问数据元素,则其算法简洁、快速。
易读、易懂。
(2)顺序表的缺点:
等概率情况下做插入和删除操作时,需要平均移动大约表中一半的元素,所以如果n较大,则做插入和删除的效率较低;
一般采用数组来定义顺序表,而数组是一种静态分配结构,不是执行时按需分配空间,所以为了操作方便,一般都会预先分配足够大的存储空间,但如果预先分配过大,则可能导致顺序表后部空间大量闲置,造成空间浪费,如果预先分配过小,则又会因空间不足造成溢出;
由于数组需要占用连续的空间存储,所以一些累计数量虽然超过所需要存储空间,但不连续的零散空间并不能得到利用,造成“碎片”现象,从而导致整个内存空间利用率下降。
[1][3][4]
而课程设计中,我们着重考虑的是顺序表的结构,对于顺序表,我们可以进行的操作有输入、插入、删除、取出等。
3.2设计函数库
设计函数库不能随心所欲、想编写什么函数就编写什么函数,而是要根据分析顺序表所得结果,从分析结果入手。
又分析我们知道顺序表可以进行的操作有:
输入、输出、插入一个元素、删除一个元素、查找一个元素、取出一个元素。
根据这些操作分别写出函数:
/*插入元素*/
/*删除元素*/
/*查找元素*/
/*取出元素*/
/*输出元素*/
3.3编写主函数
函数库设计完之后,还要进行调试,就需要编写一个主函数来测试函数的有效性与正确性。
在主函数中调用函数库中的函数实现其功能,主函数中使用一个switch功能进行条件判断,当输入选项不一样的时候,调用的函数不一样,从而对顺序表中的元素实现不同的操作。
3.4书写文档
按着格式编写文档并检查,保证论文没有错误。
4程序运行结果
4.1确定顺序表中元素个数
在程序中,顺序表元素的个数以及元素都是自己在运行时进行输入的,输入完后按Enter进入选项选择。
其显示如图4-1:
4-1输入元素
4.2显示顺序表中所有元素
利用switch的功能输入1显示所有元素,结果如图4-2:
4-2显示所有元素
4.3在顺序表中插入一个元素
利用switch的功能输入2插入一个元素,结果如图4-3:
4-3插入一个元素
4.4删除顺序表中一个元素
利用switch的功能输入3删除一个元素,结果如图4-4:
4-4删除一个元素
4.5确定顺序表中元素个数
利用switch的功能输入4按值查找一个元素,结果如图4-5:
4-5按值查找一个元素
4.6取出顺序表中一个元素
利用switch的功能输入5取出一个元素,结果如图4-6:
4-6取出一个元素
4.7退出程序
利用switch功能输入6退出程序。
5结束语
在课程设计中,使用C语言来设计顺序表的相关函数库,C语言是一门面向过程的高级语言。
设计代码时,要尽量考虑完备,把可能出现的情况都想到。
顺序表的函数库中,要考虑顺序表的结构,在物理上也是相邻,所以很容易查找到某个存在的数据的位置、下标,若已知序号,也很容易找到元素。
将函数库写出来以后,在以后程序需要利用函数时,无须每次都写一次函数,可以节约精力与时间。
在之前的学习中,就了解了顺序表的特点以及功能,通过此次的课程设计,更加加深了我对顺序存储这种结构的认识,既回顾了以前的东西,也发现了很多以前都没遇见过的问题,收获很大。
参考文献
[1]陈倩诒,邓红卫.数据结构(C语言版).武汉:
华中科技大学出版社,2013
[2]严蔚敏,吴伟民.数据结构(C语言版)[M].北京:
清华大学出版社,1997
[3]许卓群,杨冬青,唐世渭,等.数据结构与算法[M].北京:
高等教育出版社,2006
[4]徐孝凯.数据结构简明教程.北京:
清华大学出版社,1995年
附录1:
结构化设计源程序清单
//程序名称:
SXB.CPP
//程序功能:
利用C语言设计顺序表的函数库,以便于调用函数时调用。
//程序作者:
胡洁
//最后修改日期:
2013-7-7
#include<
stdio.h>
stdlib.h>
#defineMAXSIZE100
typedefintdatatype;
typedefstruct
{datatypedata[MAXSIZE];
intlen;
}Seqlist;
/*将data和len封装成一个结构体*/
Seqlist*Init_Seqlist()
{Seqlist*L;
L=(Seqlist*)malloc(sizeof(Seqlist));
len=-1;
returnL;
}/*顺序表初始化*/
}/*表空间已满,不能插入*/
len+2)/*检查插入位置i是否有效*/
/*节点往后移动一个位置*/
intLocate_Seqlist(Seqlist*L,datatypee)
inti=0;
while(i<
=L->
len&
&
data[i]!
=e)
i++;
if(i>
len)return-1;
/*查找失败*/
elsereturni;
/*返回存储位置*/
voidprint(Seqlist*L)
ints;
for(s=0;
s<
s++)
printf("
%d"
L->
data[s]);
/*输出顺序表中所有元素*/
\n"
main()
{
Seqlist*L;
inti,j,s,e,m,flag=1;
L=Init_Seqlist();
请输入表长:
"
scanf("
%d"
&
i);
len=i;
请输入%d个元素值:
/*确定表长*/
for(s=0;
i;
s++)
/*输入表中元素*/
while(flag)/*使用标识flag*/
请选择:
1:
显示所有元素\n"
2:
加入一个元素\n"
3:
删除一个元素\n"
4:
按值查找一个元素\n"
5:
取出一个元素\n"
6:
退出程序\n"
/*输入顺序表元素之后显示选项*/
j);
switch(j)/*当输入数字j时自动调用函数库中的函数实现功能*/
case1:
{print(L);
break;
case2:
输入需要插入的位置和数值:
%d%d"
i,&
e);
m=Insert_Seqlist(L,i,e);
if(m)
插入之后的线性表:
/*显示插入元素后的顺序表*/
print(L);
}
break;
case3:
输入需要删除的位置:
m=Delete_Seqlist(L,i);
删除之后的线性表:
/*显示删除元素后的顺序表*/
case4:
输入需要查找的数值:
m=Locate_Seqlist(L,e);
if(m!
=-1)
存在该数据元素,它在表中的下标为:
%d\n"
m);
/*输出元素在表中的下标*/
elseprintf("
所查找的元素不存在!
/*不存在报错*/
case5:
取出第n个元素:
m=Get_Seqlist(L,i);
所取的数据元素为:
data[i-1]);
/*输出所取元素*/
输入序号超出范围!
/*输入不合法报错*/
case6:
flag=0;
printf("
程序结束,按任意键退出!
/*按条件选择功能*/
return0;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 设计 顺序 相关 函数库