顺序表的初始化、建立、遍历和销毁(C++)

顺序表的定义
(1) 顺序存储方法
  即把线性表的结点按逻辑次序依次存放在一组地址连续的存储单元里的方法。
(2) 顺序表(Sequential List)
  用顺序存储方法存储的线性表简称为顺序表(Sequential List)。

顺序表的初始化(initialize)

构造一个空的顺序表L,先分配一块内存空间,然后初始化顺序表长度的值为0。
Status InitList_Sq(SqList *L)
{ //构造一个空的顺序表L
L->elem=new ElemType[MAXSIZE];
//分配一块内存空间,并将基地址赋给顺序表(头)指针
L->length=0; //初始化顺序表长度的值
return OK;
}

顺序表的建立

给顺序表的长度和各个元素赋值,n为顺序表元素的个数,此处形参是引用调用会改变其本身的值,方便于下面遍历时调用。
Status CreateList_Sq(SqList &L,int n)
{
L.length=n; //给顺序表赋值 (顺序表长度及每个元素的值)
for(int i=0;i<n;i++) //用循环依次给下标对应的元素赋值
{
cin>>L.elem[i];
}
}

顺序表的遍历

使用循环结构输出下标对应元素的值
void TraverseList_Sq(SqList &L)
{
for(int i=0;i<L.length;i++) //顺序表的遍历
{
cout<<L.elem[i]<<",";
}
}

顺序表的销毁

将之前分配的空间释放掉
void DestroyList_Sq(SqList &L)
{
if(L.elem)
delete L.elem; //释放存储空间
}

样例输入5
5 3 8 7 9
程序输出5,3,8,7,9
整合代码如下(附注释):
#include < iostream>
#include<stdlib.h>
using namespace std;
#define MAXSIZE 100
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef int Status;
typedef int ElemType;
typedef struct {
ElemType *elem; //指向数据元素的基地址
int length; //线性表的当前长度
}SqList;
Status InitList_Sq(SqList *L)
{ //构造一个空的顺序表L
L->elem=new ElemType[MAXSIZE]; //分配一块内存空间
if(!L->elem) //对L->elem进行逻辑非运算,如果L->elem为空则括号内为真,执行exit且返回值为-2;如果L->elem不为空则扩号内为假,不执行exit。
exit(OVERFLOW); //返回值为-2,便于分析代码错误
L->length=0;
return OK;
}
Status CreateList_Sq(SqList &L,int n)
{
L.length=n; //给顺序表赋值 (顺序表长度及每个元素的值)
for(int i=0;i<n;i++)
{
cin>>L.elem[i];
}
}

//在此处定义顺序表插入函数ListInsert_Sq

void TraverseList_Sq(SqList &L)
{
for(int i=0;i<L.length;i++) //顺序表的遍历
{
cout<<L.elem[i]<<",";
}
cout<<"\b "; //凑样例输出
}
void DestroyList_Sq(SqList &L)
{
if(L.elem)
delete L.elem; //释放存储空间
}
int main()
{
SqList L;
int i,n,e;
InitList_Sq(&L);
//提示:输入元素个数:
cout<<“请输入元素个数:”;
cin>>n;
CreateList_Sq(L,n);
TraverseList_Sq(L);
DestroyList_Sq(L);
return 0;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值