- 17
- 0
- 约1.7万字
- 约 12页
- 2016-10-20 发布于贵州
- 举报
C中如何建一个顺序表
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+
您可能关注的文档
- bad51-e安型防爆灯和bad81防爆灯价格.docx
- bad309e爆探照灯和手提防爆照明灯价格.docx
- bad52防爆和blc8610防爆道路灯价格.docx
- bad51隔爆防爆灯和BTC8200矿用隔爆型射灯价格.docx
- bad52防爆和防爆型防爆灯价格.docx
- BAD502C爆强光应急工作灯和CBY5069A防爆移动工作灯价格.docx
- bad56隔爆防爆灯和B3C-250系列隔爆型防爆灯价格.docx
- BAD54系列爆灯和LED工矿灯防爆灯价格.docx
- BAD60-10B-70W油站灯和100W防爆LED路灯头价格.docx
- BAD61防爆和CBY52-Y隔爆型抽芯式应急荧光灯(ⅡB)价格.docx
原创力文档

文档评论(0)