• c++简单编写线性表(实验)


    哇 好久没更博客了  因为从上次更文到现在为止,我一直在学c#,然后也觉得没什么太大的东西想写在博客上,

    总之这次就简单的传一下学校安排的数据结构的实验,我还是学生,是新手,希望能继续跟大家一起学习,

    共勉,有错望指出,这样就可以不断学习,谢谢。

    *******这次实验是第一个实验,名称是线性表操作,我就结合我所学的写一下。********

    *******线性表的概念我就不多提了,直接上代码,简单粗暴。********

    *******线性表操作我写有了 初始化 判断为空 判断为满 插入 追加 删除 销毁 遍历等操作********

    代码如下:

    # include<iostream>
    # include<stdlib.h>
    using namespace std;

    typedef struct Arr
    {
    int * pBase; //存储空间的基地址
    int len; //当前顺序表所能容纳的最大长度
    int cnt; //当前顺序表的有效长度
    } Shun;

    void csh(Shun & pArr,int len);//功能:初始化顺序表
    bool append(Shun & pArr,int val);//功能:往顺序表中追加元素
    bool isempty(Shun & pArr);//功能:判断顺序表是否为空
    bool isfull(Shun & pArr);//功能:判断顺序表是否为满
    bool Insert(Shun & pArr,int pos,int val);//功能:在指定位置插入一个元素
    void Show(Shun & pArr);//功能:遍历整个顺序表并打印
    bool Delete(Shun & pArr,int pos);//功能:删除顺序表指定位置的元素
    bool xh(Shun & pArr);//功能:销毁顺序表

    int main(void)
    {
    Shun biao; //声明一个顺序表
    csh(biao,10); //初始化该顺序表并赋予10单位的长度
    cout<<"往顺序表里追加(增加)5个元素,追加后的结果如以下所示:"<<endl;
    append(biao,1);
    append(biao,5);
    append(biao,87);
    append(biao,12);
    append(biao,100);
    Show(biao);
    cout<<"删除第3个元素,删除后的结果如以下所示:"<<endl;
    Delete(biao,3);
    Show(biao);
    cout<<"往第2个位置插入一个值“520”,插入后的结果如以下所示:"<<endl;
    Insert(biao,2,520);
    Show(biao);
    if(xh(biao))
    cout<<"已销毁成功!!"<<endl;
    else
    cout<<"销毁出错!!"<<endl;
    return 0;
    }

    void csh(Shun & pArr,int len)
    {
    pArr.pBase = new int[len];
    if(!pArr.pBase)
    exit(-1);
    pArr.len=len;
    pArr.cnt=0;
    }

    bool isempty(Shun & pArr)
    {
    if(0==pArr.cnt)
    return true;
    else
    return false;
    }

    bool isfull(Shun & pArr)
    {
    if(pArr.len==pArr.cnt)
    return true;
    else
    return false;
    }

    void Show(Shun & pArr)
    {
    if(isempty(pArr))
    cout<<"顺序表为空!!"<<endl;
    else
    {
    for(int i=0; i<pArr.cnt; i++)
    {
    cout<<pArr.pBase[i]<<" ";
    }
    cout<<endl;
    }
    }

    bool append(Shun & pArr,int val)
    {
    if(isfull(pArr))
    return false;
    else
    {
    pArr.pBase[pArr.cnt++]=val;
    return true;
    }
    }

    bool Insert(Shun & pArr,int pos,int val)
    {
    if(isfull(pArr))
    return false;
    if(pos<1||pos>pArr.cnt+1)
    return false;
    if(pos<=pArr.cnt)
    {
    for(int i=pArr.cnt-1; i>=pos-1; i--)
    {
    pArr.pBase[i+1]=pArr.pBase[i];
    }
    }
    pArr.pBase[pos-1]=val;
    pArr.cnt++;
    return true;
    }

    bool Delete(Shun & pArr,int pos)
    {
    if(isempty(pArr))
    return false;
    if(pos<0||pos>pArr.cnt)
    return false;
    for(int i=pos; i<pArr.cnt; i++)
    {
    pArr.pBase[i-1]=pArr.pBase[i];
    }
    pArr.cnt--;
    return true;
    }

    bool xh(Shun & pArr)
    {
    if(pArr.pBase==NULL)
    return false;
    delete pArr.pBase;
    pArr.pBase=NULL;
    return true;
    }

    效果图如下:

     ******共勉******

  • 相关阅读:
    【jQuery Case Study 1】Site:cssninjas.com
    PostgreSQL HA双机热备份配置
    PogreSQL物理备份与逻辑备份
    转:truncate,delete和drop删除表的异同
    pgsequence序列的用例
    Linux下端口占用的解决方法
    Linux下脚本的编写和执行
    schema模式的选用
    pg数据库基础备份的注意事项
    PostgreSQL VMCC多版本并发控制
  • 原文地址:https://www.cnblogs.com/yellowgg/p/7832788.html
Copyright © 2020-2023  润新知