zoukankan      html  css  js  c++  java
  • 数据结构_线性表之顺序表(1)

    基本简单的顺序表操作

    #include <iostream>
    using namespace std;
    #define Maxsize 3
    //顺序表结构 C方式
    typedef struct SqList_C {
    
        int data[Maxsize];//线性表最大长度,大小已定,不用申请内存,直接用
        int length;//记录线性表当前长度
    
    }SqList_C;
    //顺序线性表结构 C++方式
    typedef struct SqList {
        
        int *data;//线性表最大长度
        int length;//记录线性表当前长度
    
    }SqList;
    
    
    //(1)初始化顺序表 C++方式 使用C++引用符号初始化顺序表
    int InitSqList(SqList &L);
    //(1)初始化顺序表 C方式 使用指针方式初始化顺序表
    int InitSqList_C(SqList *L);
    //(2)清空顺序表
    int ClearSqList(SqList &L);
    //(3)获取表长 参数SqList类型变量
    int GetLength(SqList &L);
    //(4)判断是否表空 参数SqList类型变量
    int EmptyList(SqList L);
    //(5)按位查找元素 查找第i个位置的元素
    int GetElem(SqList L,int i);
    //(6)按值查找元素 查找值为e的元素
    int LocateElem(SqList L, int e);
    //(7)顺序表插入元素操作
    int SqListInsert(SqList &L, int i, int e);
    //(8)顺序表删除元素操作
    int SqListDelete(SqList &L, int i,int &e);
    //(9)打印一个顺序表 参数SqList类型变量
    void PrintList(SqList L);
    int main() {
        //测试数据开始**************
        SqList L;
        InitSqList(L);
        SqListInsert(L, 1, 5);
        SqListInsert(L, 1, 15);
        SqListInsert(L, 1, 25);
        //SqListInsert(L, 1, 25);
        PrintList(L);
        ClearSqList(L);
        SqListInsert(L, 1, 25);
        SqListInsert(L, 1, 35);
    SqListDelete(L, 2, e); PrintList(L);
    //测试数据结束************** return 0; } //1.C++初始化线性表 int InitSqList(SqList &L) { L.data = new int[Maxsize];//申请内存 L.length = 0;//初始化一个空表 cout << "初始化成功!" << endl; return 1; } //1.C语言初始化线性表 int InitSqList_C(SqList L) { //L.data = (int *)malloc(sizeof(int)*Maxsize); L.length = 0; return 1; } //2.清空顺序表 int ClearSqList(SqList &L) { L.length = 0; cout << "表已清空!" << endl; return 1; } //3.获取表长 int GetLength(SqList L) { cout << "表长为:"<<L.length << endl; return L.length; } //4.判断表是否为空 int EmptyList(SqList L) { if (L.length == 0) { cout << "表空!" << endl; return 1; } else { cout << "表不为空!" << endl; return 0; } } //5.按位查找元素 int GetElem(SqList L, int i) { if (i<1 || i>L.length) return 0; cout << "你查找的元素为:"<<L.data[i-1] << endl; return L.data[i - 1]; } //6.按值查找元素 int LocateElem(SqList L, int e) { int i; for (i = 0; i < L.length; i++) { if (L.data[i] == e) { cout << "你查找的元素:"<<e<<"已找到,位置为第" <<i+1<<""<< endl; return i+1; } } return 0; } //7.顺序表插入元素 int SqListInsert(SqList &L, int i, int e) { //本算法实现元素插入,元素为传入的e,插入位置为i int k; //若线性表达到最大 if (L.length == Maxsize) { cout << "the list is full!" << endl; return 0; } //若插入的位置不合法 if (i<1 || i>L.length + 1) { cout << "位置错误!" << endl; return 0; } //若插入的位置不在表尾 if (i <= L.length) { for (k = L.length - 1; k >= i - 1; k--) { L.data[k + 1] = L.data[k];//数据后移一位 } } //新元素插入 L.data[i - 1] = e; //表长度加一 L.length++; return 1; } //8.顺序表删除元素操作 int SqListDelete(SqList &L, int i,int &e) { //本算法实现元素删除,删除的元素的位置为i if (i<1 || i>L.length) { cout << "位置错误!" << endl; return 0; } for (int k = i; k < L.length; k++) { L.data[k - 1] = L.data[k];//从删除的位置开始,后一个覆盖前一个 }

        e = L.data[i - 1];
        cout << "删除的元素为"<<e<< endl;

       L.length--;

    return 1;
    }
    //9.打印顺序表
    void PrintList(SqList L) {
        if (L.length != 0) {
            cout << "开始打印线性表:" << endl;
            for (int i = 0; i < L.length; i++) {
                cout << "" << i + 1 << "个元素是:" << L.data[i] << endl;
            }
            cout << "打印线性表任务完成!" << endl;
        }
        else {
            cout << "表空!" << endl;
        }
    
    }
  • 相关阅读:
    小程序 筛选
    Travel 项目环境配置
    ajax
    vue 项目编译打包
    自学网
    使用npm打包vue项目
    vue音乐播放器项目 二级路由跳转
    better-scroll (下拉刷新、上拉加载)
    Linux命令
    hibernate存储过程 3
  • 原文地址:https://www.cnblogs.com/hmy-666/p/13472209.html
Copyright © 2011-2022 走看看