• 线性表顺序结构基本操作的实现


    2018-10-31-15:02:46

      1 /**********************************************
      2     main函数内容:
      3          1. 从键盘输入 n 个整数,填入顺序表;
      4          2. 输出 n 个整数至屏幕;
      5          3. 查找值为某个整数的元素的位序;
      6          4. 在顺序表任一位置插入一个元素;
      7          5. 输出修改后的表至屏幕;
      8          6. 删除任一位置的元素;
      9          7. 输出修改后的表至屏幕;
     10          8. 逆序排列顺序表中的数据元素,并输出至屏幕。
     11 **********************************************/
     12 #include <cstdio>
     13 #include <iostream>
     14 #include <cstdlib>
     15 using namespace std;
     16 
     17 #define OK 1
     18 #define ERROR 0
     19 #define true 1
     20 #define false 0
     21 #define success 1
     22 #define fail 0
     23 #define Overflow -2
     24 #define Initsize 100
     25 #define Growsize 40
     26 
     27 typedef int Elemtype;
     28 typedef int Status;
     29 typedef struct list{
     30     Elemtype*elem;
     31     int Length;
     32     int Listsize;
     33 }Sqlist;
     34 
     35 Status Initlist(Sqlist &L);
     36 Status InsertElem(Sqlist &L,Elemtype e,int aidelem_locate);
     37 Status Deleteelem(Sqlist &L,Elemtype*e,int aidelem_locate);
     38 int Listlength(Sqlist L);
     39 Status Listempty(Sqlist L);
     40 Status ElemLocate(Sqlist L,Elemtype e,int*aidelem_locate);
     41 Status Showlist(Sqlist L);
     42 Status Reservelist(Sqlist L);
     43 int main()
     44 {
     45     Sqlist L;
     46     Initlist(L);
     47 
     48     int idx1,Maxnumber;
     49     scanf("%d",&Maxnumber);
     50     Elemtype*in;
     51     for(in=L.elem,idx1=1;idx1<=Maxnumber;in++,idx1++){
     52       scanf("%d",in);
     53       InsertElem(L,*in,idx1);
     54     }
     55 
     56     Showlist(L);
     57 
     58     int idx2,elem1;
     59     scanf("%d",&elem1);
     60     ElemLocate(L,elem1,&idx2);
     61     printf("%d
    ",idx2);
     62 
     63     int idx3,elem2;
     64     scanf("%d %d",&idx3,&elem2);
     65     InsertElem(L,elem2,idx3);
     66     Showlist(L);
     67 
     68     int idx4,elem3;
     69     scanf("%d",&idx4);
     70     Deleteelem(L,&elem3,idx4);
     71     Showlist(L);
     72 
     73     Reservelist(L);
     74     Showlist(L);
     75       return 0;
     76 }
     77 
     78 Status Initlist(Sqlist &L){
     79     L.elem=(Elemtype*)malloc(Initsize*sizeof(Elemtype));
     80     if(!L.elem) exit(Overflow);
     81     L.Length=0;
     82     L.Listsize=Initsize;
     83     return OK;
     84 }
     85 
     86 Status InsertElem(Sqlist &L,Elemtype e,int aidelem_locate){
     87     if(L.Length>=0){
     88       int i;
     89       L.Length+=1;
     90       if(L.Length>=L.Listsize){
     91         L.elem=(Elemtype*)realloc(L.elem,(L.Listsize+Growsize)*sizeof(Elemtype));
     92         L.Listsize+=Growsize;
     93       }
     94       if(aidelem_locate<0||aidelem_locate>L.Length+1)
     95         return ERROR;
     96       for(i=L.Length;i>=aidelem_locate;i--)
     97         L.elem[i]=L.elem[i-1];
     98       L.elem[i+1]=e;
     99       return success;
    100     }
    101     return fail;
    102 }
    103 
    104 Status Deleteelem(Sqlist &L,Elemtype*e,int aidelem_locate){
    105     if(L.Length){
    106       *e=L.elem[aidelem_locate];
    107       for(int i=aidelem_locate;i<L.Length;i++)
    108         L.elem[i]=L.elem[i+1];
    109           L.Length-=1;
    110       return success;
    111     }
    112     return fail;
    113 }
    114 
    115 Status ElemLocate(Sqlist L,Elemtype e,int*aidelem_locate){
    116     if(L.Length){
    117       for(int i=0;i<=L.Length;i++)
    118         if(L.elem[i]==e){
    119           *aidelem_locate=i;
    120           return OK;
    121         }
    122     }
    123     return fail;
    124 }
    125 
    126 Status Showlist(Sqlist L){
    127     if(L.Length){
    128       int flag;
    129       Elemtype*evel;
    130       for(evel=L.elem,flag=1;flag<=L.Length;evel++,flag++){
    131         printf("%d	",*evel);
    132         if(flag%5==0)
    133           printf("
    ");
    134       }
    135       if(L.Length%5!=0)
    136       printf("
    ");
    137       return true;
    138     }
    139     return false;
    140 }
    141 
    142 Status Reservelist(Sqlist L){
    143     if(L.Length){
    144       for(int i=0;i<L.Length/2;i++){
    145         Elemtype replace=L.elem[i];
    146         L.elem[i]=L.elem[L.Length-i-1];
    147         L.elem[L.Length-i-1]=replace;
    148       }
    149       return true;
    150     }
    151     return false;
    152 }
    153 /***************************
    154     Author:CRUEL_KING
    155     Time:2018/10/31
    156     Program name:线性表顺序储存结构的基本操作实现.cpp
    157 ***************************/
  • 相关阅读:
    删除当前目录下除了system目录的其他文件
    单例设计模式
    系统工程师
    字符串翻转
    教育
    得到b相对于a的路径
    一段处理事务的代码
    搭讪
    win 8 ,vs2011 编程环境下,动软生成器无法连接上 sql server 2008 r2
    从asp网站编程转行到asp.net网站编程的过程
  • 原文地址:https://www.cnblogs.com/bianjunting/p/9883213.html
Copyright © 2020-2023  润新知