zoukankan      html  css  js  c++  java
  • 顺序表的相关操作

      1 #include <stdio.h>
      2 #include <stdlib.h>
      3 #define MaxSize 50
      4 typedef int ElemType;
      5 //静态分配
      6 typedef struct{
      7     ElemType data[MaxSize];
      8     int length;
      9 }SqList;
     10 //动态分配
     11 #define InitSize 100
     12 typedef struct{
     13     ElemType *data;
     14     int capacity;//动态数组的最大容量
     15     int length;
     16 }SeqList;
     17 //i代表插入的位置,从1开始
     18 bool ListInsert(SqList &L,int i,ElemType e)
     19 {
     20     //判断要插入的位置是否合法
     21     if(i<1||i>L.length+1) return false;
     22     if(L.length>=MaxSize) return false;
     23     //移动顺序表中的元素
     24     for(int j=L.length;j>=i;j--){
     25         L.data[j]=L.data[j-1];
     26     } 
     27     L.data[i-1]=e;//数组下标从零开始,插入第一个位置,访问的下标为0
     28     L.length++;
     29     return true;
     30 }
     31 //删除使用元素e的引用的目的是拿出对应的值
     32 bool ListDelete(SqList &L,int i,ElemType &e)
     33 {
     34     //如果删除的位置是不合法
     35     if(i<1||i>L.length) return false;
     36     //获取顺序表中对应的元素,赋值给e
     37     e=L.data[i-1];
     38     for(int j=i;j<L.length;j++){
     39         L.data[j-1]=L.data[j];
     40     }
     41     //删除一个元素,顺序表长度减1
     42     L.length--;
     43     return true;
     44 }
     45 //查找成功,返回位置,位置从1开始,查找失败,返回0
     46 int LocateElem(SqList L,ElemType e)
     47 {
     48     int i;
     49     for(i=0;i<L.length;i++){
     50         if(L.data[i]==e){
     51             //加1就是元素在顺序表中的位置
     52             return i+1;
     53         }
     54     }        
     55     return 0;
     56 }
     57 //打印顺序表元素
     58 void PrintList(SqList &L)
     59 {
     60     for(int i=0;i<L.length;i++){
     61         printf("%4d",L.data[i]);
     62     }
     63     printf("
    ");
     64 }
     65 int main()
     66 {
     67     //顺序表的名称
     68     SqList L;
     69     //查看返回值
     70     bool ret;
     71     //要删除的元素
     72     ElemType del;
     73     //首先手动在顺序表中赋值
     74     L.data[0]=1;
     75     L.data[1]=2;
     76     L.data[2]=3;
     77     L.length=3;//总计三个元素
     78     PrintList(L);
     79     ret=ListInsert(L,2,60);
     80     if(ret){
     81         printf("插入成功
    ");
     82         PrintList(L);
     83     }else{
     84         printf("插入失败
    ");
     85     }
     86     ret=ListDelete(L,1,del);
     87     if(ret){
     88         printf("删除成功
    ");
     89         printf("删除元素值为 %d
    ",del);
     90         PrintList(L);
     91     }else{
     92         printf("删除失败
    ");
     93     }
     94     ret=LocateElem(L,60);
     95     if(ret){
     96         printf("查找成功
    ");
     97         printf("元素位置为 %d
    ",ret);
     98     }else{
     99         printf("查找失败
    ");
    100     }
    101     //停在控制台窗口
    102     system("pause");
    103 }
  • 相关阅读:
    Scala学习笔记(四)—— 数组
    Scala学习笔记(三)—— 方法和函数
    Scala学习笔记(二)——Scala基础
    Scala学习笔记(一)
    HDFS和GFS对比学习
    HDFS原理学习
    c++日历问题
    Mapreduce学习
    c++动态规划解决数塔问题
    C++——数码管
  • 原文地址:https://www.cnblogs.com/shixinzei/p/12539286.html
Copyright © 2011-2022 走看看