- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C++中如何建立一个顺序表准备数据
初始化顺序表
计算线性表的长度
插入结点
追加结点
删除结点
查找结点
按照序号查找结点
按照关键字查找结点
显示所有的结点
顺序表操作完整示例
准备数据
[cpp] view plaincopyprint?
#define MAXLEN 100 //定义顺序表的最大长度
struct DATA
{
char key[10]; //结点的关键字
char name[20];
int age;
};
struct SLType //定义顺序表结构
{
DATA ListData[MAXLEN+1];//保存顺序表的结构数组
int ListLen; //顺序表已存结点的数量
}; #define MAXLEN 100 //定义顺序表的最大长度
struct DATA
{
char key[10]; //结点的关键字
char name[20];
int age;
};
struct SLType //定义顺序表结构
{
DATA ListData[MAXLEN+1];//保存顺序表的结构数组
int ListLen; //顺序表已存结点的数量
};
定义了顺序表的最大长度MAXLEN、顺序表数据元素的类型DATA以及顺序表的数据结构SLType。
在数据结构SLType中,Listen为顺序表已存结点的数量,也就是当前顺序表的长度,ListData是一个结构数组,用来存放各个数据结点。
我们认为该顺序表是一个班级学生的记录。其中,key为学号,name为学生的名称,age为年龄。
因为数组都是从下标0开始的,为了使用方便,我们从下标1开始记录数据结点,下标0的位置不可用。
初始化顺序表
在使用顺序表之前,首先创建一个空的顺序表,也就是初始化顺序表。这里,在程序中只需设置顺序表的结点数量ListLen为0即可。这样,后面需要添加的数据元素将从顺序表的第一个位置存储。
示例代码:
[cpp] view plaincopyprint?
void SLInit(SLType * SL) //初始化顺序表
{
SL-Listlen=0;
}
void SLInit(SLType * SL) //初始化顺序表
{
SL-Listlen=0;
}
计算线性表的长度
计算线性表的长度也就是计算线性表中结点的个数,由于我们在SLType中定义了ListLen来表示结点的数量,所以我们只需要获得这个变量的值即可。
[cpp] view plaincopyprint?
int SLLenght(SLType *SL)
{
return(SL-ListLen); //返回顺序表的元素数量
} int SLLenght(SLType *SL)
{
return(SL-ListLen); //返回顺序表的元素数量
}
插入结点
插入节点就是在线性表L的第i个位置上插入一个新的结点,使其后的结点编号依次加1。
这时,插入一个新节点之后,线性表L的长度将变为n+1。插入结点操作的难点在于随后的每个结点数据都要向后移动,计算机比较大,示例代码如下:
[cpp] view plaincopyprint?
int SLInsert(SLType *SL,int n,DATA data)
{
int i;
if(SL-ListLen=MAXLEN) //顺序表结点数量已超过最大数量
{
cout顺序表已满,不能插入结点!endl;
return 0; //返回0表示插入不成功
}
if(n1||nSL-ListLen) //插入结点的序号不合法
{
cout插入序号错误!endl;
return 0;
}
for(i=SL-ListLen;i=n;i--) //将顺序表中的数据向后移动
{
SL-ListData[i+1]=SL-ListData[i];
}
SL-ListData[n]=data;
SL-ListLen++;
return 1;
} int SLInsert(SLType *SL,int n,DATA data)
{
int i;
if(SL-ListLen=MAXLEN) //顺序表结点数量已超过最大数量
{
cout顺序表已满,不能插入结点!endl;
return 0; //返回0表示插入不成功
}
if(n1||nSL-ListLen) //插入结点的序号不合法
{
cout插入序号错误!endl;
return 0;
}
for(i=SL-ListLen;i=n;i--) //将顺序表中的数据向后移动
{
SL-ListData[i+1]=SL-Li
您可能关注的文档
- 主板点不亮维修实例幻灯片.doc
- 液晶显示器故障实例之电源指南.doc
- 主板上电流程幻灯片.docx
- 博艺通讯常见问题解决方法摘要.doc
- 启动设备无法引导系统解决方法.doc
- 恢复操作系统或整个服务器课件.doc
- 第三章 电脑主板检测卡代码大全.doc
- SQL日期与时间函数.doc
- 细菌性食物中毒概论.doc
- 中兴SDH认证考试题库(三)幻灯片.doc
- 新高考生物二轮复习讲练测第6讲 遗传的分子基础(检测) (原卷版).docx
- 新高考生物二轮复习讲练测第12讲 生物与环境(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第3讲 酶和ATP(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第9讲 神经调节与体液调节(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第11讲 植物生命活动的调节(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第8讲 生物的变异、育种与进化(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第5讲 细胞的分裂、分化、衰老和死亡(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第5讲 细胞的分裂、分化、衰老和死亡(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第12讲 生物与环境(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第11讲 植物生命活动的调节(检测)(原卷版).docx
文档评论(0)