• 顺序表的定义及其相关基本操作


     1 #include <iostream>
     2 #include <cstdio>
     3 using namespace std;
     4 #define maxSize 100
     5 typedef struct{
     6     int data[maxSize];    // 存放顺序表元素的数组
     7     int length;        //存放顺序表的长度
     8 }Sqlist;    //顺序表定义的类型
     9 
    10 // 但在考试中常用如下方式:
    11 int A[maxSize];
    12 int n;
    13 void initList(Sqlist &L){
    14     L.length = 0;
    15 }
    16 //在顺序表查找第一个值等于e的元素,并返回其下标
    17 int FindElem(Sqlist L, int e){
    18     for(int i = 0;i < L.length; ++i)
    19         if(e == L.data[i])
    20             return i;
    21     return -1;
    22 }
    23 //用e返回顺序表中制定位置p(0<=p<=length-1)位置上的元素
    24 int getElem(Sqlist L,int p,int &e){            //e要改变,所以用引用型
    25     if(p < 0 || p >L.length-1)    //p越界错误时返回-1
    26         return -1;
    27     e = L.data[p];
    28     return 1;
    29 }
    30 // 在顺序表的第p(0<=p<=length)个位置上插入新的元素e(可插入的位置为length+1)
    31 int insertElem(Sqlist &L, int p, int e){    //L本身要发生改变,所以用引用型
    32     if(p < 0 || p > L.length || L.length==maxSize) 
    33         //位置是错的或者已经达到顺序表的最大允许值,插入不成功,返回0
    34         return 0; 
    35     for(int i=L.length-1; i>=p;--i)
    36         L.data[i+1] = L.data[i];    //从后往前,逐个将元素后移一位
    37     L.data[p] = e;        //将e放在插入位置P上
    38     L.length++;            //表内元素多了一个,表长加1
    39     return 1;            //插入成功,返回1
    40 }
    41 
    42 //删除顺序表L中下标为p(0<=p<=length)的元素,成功返回1,否则返回0,并将被删除元素的值赋给e
    43 int deleteElem(Sqlist &L,int p ,int &e){    //顺序表和e都要改变,用引用型
    44     if(p < 0 || p > L.length-1)
    45         return 0;
    46     e = L.data[p];    //将被删除元素赋给e
    47     for(int i = p; i<L.length-1; i++)
    48         L.data[i] = L.data[i+1];        //删除元素后面的元素要依次前移一个位置
    49     L.length--;        //表长减1
    50     return 1;        //删除成功,返回1
    51 }
    52 int main()
    53 {
    54     //测试 顺序表 
    55     Sqlist L;
    56     initList(L);//空表 
    57     insertElem(L,0,1);//第0个位置插入1 
    58     cout<<L.length<<endl;//此时顺序表的长度为1
    59     insertElem(L,1,2);
    60     insertElem(L,2,3);
    61     cout<<FindElem(L,2)<<endl;//查找值为2的元素返回其下标未找到返回-1 
    62     int e;
    63     //获取下标为1的元素
    64     cout<<getElem(L,1,e)<<endl;
    65     cout<<e<<endl; 
    66     //删除下标为0的元素
    67     deleteElem(L,0,e);
    68     cout<<e<<endl;
    69     cout<<L.length<<endl;
    70     return 0;
    71 }
  • 相关阅读:
    gitblit安装使用
    谷歌AMP和百度MIP是什么鬼?
    微信小程序开发体验
    设计模式之策略模式
    【前端安全】JavaScript防XSS攻击
    【前端安全】JavaScript防流量劫持
    设计模式之“中间件模式”
    设计模式之Mixin模式
    设计模式之观察者模式
    设计模式之单例模式
  • 原文地址:https://www.cnblogs.com/shixinzei/p/11360602.html
Copyright © 2020-2023  润新知