c++9月20日

1.思维导图

2.顺序表

头文件

#ifndef RECTANGLE_H
#define RECTANGLE_H

#include <iostream>

using namespace std;

using datatype = int ;//类型重定义

class Seqlist
{
private://私有权限
    datatype *ptr; //指向堆区申请空间的起始地址
    int size;//堆区空间的长度
    int len = 0;//顺序表的实际长度
public://公共权限
    void init(int );
    void menu();
    bool menu1();
    bool empty();
    bool full();
    void push_back(datatype);
    void show();
    void insert();
    void erase();
    void pop_back();
    void Size();
    void sort(bool);
    void at();
};


#endif // RECTANGLE_H

功能函数

#include"rectangle.h"
void Seqlist::init(int n)
{
    this->ptr = new datatype[n];//在堆区申请n个datatype类型的空间
    this->len = 0;//对Seqlist的实际长度初始化
    this->size = n;//确定Seqlist的最大长度
}
void Seqlist::menu()
{
    cout<<"****1.插入***************"<<endl;
    cout<<"****2.删除***************"<<endl;
    cout<<"****3.尾删***************"<<endl;
    cout<<"****4.求长度*************"<<endl;
    cout<<"****5.获取任意位置元素***"<<endl;
    cout<<"****6.排序***************"<<endl;
    cout<<"****7.查看所有元素*******"<<endl;
    cout<<"****8.退出***************"<<endl;
    int n;
    cout<<"请输入:";
    cin>>n;
    bool flag;
    switch(n)
    {
    case 1:insert();
        break;
    case 2:erase();
        break;
    case 3:pop_back();
        break;
    case 4:Size();
        break;
    case 5:at();
        break;
    case 6:flag = menu1();sort(flag);
        break;
    case 7:show();
        break;
    case 8:exit(0);
        break;
    }
}
bool Seqlist::empty()//判空
{
    return this->len == 0;//Seqlistd的实际长度为0时返回一个false(假)
}
bool Seqlist::full()//判满
{
    return this->len == this->size;//Seqlist的实际长度为size时返回一个true(真)
}
void Seqlist::push_back(datatype e)//尾插
{
    if(this->full())//判满
    {
        cout<<"顺序表已满"<<endl;
        return;
    }
    this->ptr[len++] = e;
}
void Seqlist::show()//查看顺序表内的数据
{
    if(this->empty())// 判空
    {
        cout<<"顺序表为空"<<endl;
        return;
    }
    for(int i = 0;i<this->len;i++)
    {
        cout<<this->ptr[i]<<" ";
    }
    cout<<endl;
}
void Seqlist::insert()//任意位置插入
{
    if(this->full())//判满
    {
        cout<<"顺序表已满"<<endl;
        return;
    }
    cout<<"输入插入位置:";
    int index;
    cin>>index;
    cout<<"输入插入数字:";
    datatype e;
    cin>>e;
    this->len++;
    for(int i=this->len;i>=index;i--)
    {
        this->ptr[i]=this->ptr[i-1];
    }
    this->ptr[index-1] = e;
}
void Seqlist::erase()//任意位置删除
{
    if(this->empty())// 判空
    {
        cout<<"顺序表为空"<<endl;
        return;
    }
    cout<<"输入删除位置:";
    int index;
    cin>>index;
    for(int i=index-1;i<this->len;i++)
    {
        this->ptr[i]=this->ptr[i+1];
    }
    this->len--;
}
void Seqlist::pop_back()//尾删
{
    if(this->empty())// 判空
    {
        cout<<"顺序表为空"<<endl;
        return;
    }
    this->ptr[len]=0;
    this->len--;
}
void Seqlist::Size()//顺序表长度
{
    if(this->empty())// 判空
    {
        cout<<"顺序表为空"<<endl;
        return;
    }
    cout<<"长度为:"<<this->len<<endl;
}
bool Seqlist::menu1()
{
    cout<<"1.升序"<<endl;
    cout<<"2.降序"<<endl;
    bool flag;
    int n;
    cin>>n;
    if(n==1)
    {
        flag=true;
    }
    else
    {
        flag=false;
    }
    return flag;
}
void Seqlist::sort(bool flag)//排序
{
    if(this->empty())// 判空
    {
        cout<<"顺序表为空"<<endl;
        return;
    }
    int i,j;
    for(i=1;i<this->len;i++)
    {
        for(j=0;j<this->len-i;j++)
        {
            if(flag!=0&&this->ptr[j]>this->ptr[j+1])
            {
                int temp = this->ptr[j];
                this->ptr[j]=this->ptr[j+1];
                this->ptr[j+1]=temp;
            }
            else if(flag==0&&this->ptr[j]<this->ptr[j+1])
            {
                int temp = this->ptr[j];
                this->ptr[j]=this->ptr[j+1];
                this->ptr[j+1]=temp;
            }
        }
    }
}
void Seqlist::at()//获得数据
{
    if(this->empty())// 判空
    {
        cout<<"顺序表为空"<<endl;
        return;
    }
    int inex;
    cout<<"输入获取位置:";
    cin>>inex;
    if(inex>this->len)
    {
        cout<<"该位置为空";
    }
    else
    {
    cout<<"该位置为"<<this->ptr[inex-1]<<endl;
    }
}

主函数

#include"rectangle.h"
int main()
{
    Seqlist s1;
    s1.init(5);
    int arr[3]={1,3,5};
    for(int i=0;i<3;i++)
    {
        s1.push_back(arr[i]);
    }
    while(1)
    {
        s1.menu();
    }
    return 0;
}
相关推荐
Theodore_10221 小时前
4 设计模式原则之接口隔离原则
java·开发语言·设计模式·java-ee·接口隔离原则·javaee
网易独家音乐人Mike Zhou2 小时前
【卡尔曼滤波】数据预测Prediction观测器的理论推导及应用 C语言、Python实现(Kalman Filter)
c语言·python·单片机·物联网·算法·嵌入式·iot
冰帝海岸2 小时前
01-spring security认证笔记
java·笔记·spring
世间万物皆对象3 小时前
Spring Boot核心概念:日志管理
java·spring boot·单元测试
‘’林花谢了春红‘’3 小时前
C++ list (链表)容器
c++·链表·list
没书读了3 小时前
ssm框架-spring-spring声明式事务
java·数据库·spring
小二·3 小时前
java基础面试题笔记(基础篇)
java·笔记·python
开心工作室_kaic4 小时前
ssm161基于web的资源共享平台的共享与开发+jsp(论文+源码)_kaic
java·开发语言·前端
懒洋洋大魔王4 小时前
RocketMQ的使⽤
java·rocketmq·java-rocketmq
武子康4 小时前
Java-06 深入浅出 MyBatis - 一对一模型 SqlMapConfig 与 Mapper 详细讲解测试
java·开发语言·数据仓库·sql·mybatis·springboot·springcloud