C++中如何建一个顺序表.docVIP

  • 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+

文档评论(0)

1亿VIP精品文档

相关文档