数据结构-线性表-数组实现

任务

创建一个静态的顺序表存放整数,大小为10,完成以下操作:

  1. 输入6个整数,打印出顺序表中的内容,并显示顺序表中剩余的空间个数;
  2. 在顺序表的第3个位置插入元素值为0,打印出顺序表的内容,并显示剩余空间个数;
  3. 试图在顺序表第11个位置插入元素值为0 ,程序应提示:插入位置无效;
  4. 删除表中第2个元素,打印出顺序表的内容。
    请给出实现以上功能的程序清单,程序中函数、关键语句等应给出必要的注释,并注意变量命名,提高代码质量。

代码实现

#include<iostream>
using namespace std;

typedef int DataType;

// 定义线性表
typedef struct SeqList{
    DataType *elem;
    int Max; //表示线性表最大长度
    int n;//表示线性表中数据元素的个数
} SeqList;

typedef struct SeqList * pseqlist;

// 创建
void CreateSeqList(pseqlist palist, int m)
{
    if (palist!=NULL)
    {
        palist->elem= new DataType(m);
        if (palist->elem!=NULL)
        {
            palist->Max=m;
            palist->n=0;
            return ;
        }
        else free(palist);
    }
    cout<<"creat failed!";
}

// 添加元素
void Append(pseqlist palist, DataType x)
{
    if (palist->n >= palist->Max)
    {
        cout<<"overflow!";
        return ;
    }
    palist->elem[palist->n]=x;
    palist->n++;
}

// 指定位置, 插入元素
void Insert(pseqlist palist, int index, DataType data){
    if(index<0 || index > palist->n){
        cout<<"插入失败"<<endl;
        return ;
    }
    for(int i=palist->n; i>=index; i--){
        palist->elem[i+1] = palist->elem[i];
    }
    palist->elem[index] = data;
    palist->n++;
}

// 输出线性表
void Print(pseqlist palist)
{
    for(int i=0;i<palist->n;i++){
        cout<<palist->elem[i]<<" ";    
    }
    cout<<" 剩余: "<<palist->Max-palist->n<<endl;    
}

// 指定位置, 删除元素
void Del(pseqlist palist, int index){
    if(index<0 || index > palist->n){
        cout<<"删除失败"<<endl;
        return ;
    }
    for(int i=index; i<palist->n;i++){
        palist->elem[i] = palist->elem[i+1];
    }
    palist->n--;
}

int main(){
    pseqlist list;
    DataType data;
    CreateSeqList(list, 10);
    for(int i=0; i<6; i++){
        cin>>data;
        Append(list, data);
    }
    Print(list);
    Insert(list, 2, 0);
    Print(list);
    Insert(list, 10, 0);
    Del(list, 1);
    Print(list);
    return 0;
}

运行结果

posted @ 2021-04-25 18:26  漫漫长夜何时休  阅读(82)  评论(0编辑  收藏  举报