zoukankan      html  css  js  c++  java
  • 【数据结构上机练习】2.顺序表的简单操作(数组)

      1 //============================================================================
      2  // Name        : 2.cpp
      3  // Author      : menglei
      4  // Version     :
      5  // Copyright   : Your copyright notice
      6  // Description : Hello World in C++, Ansi-style
      7  //============================================================================
      8  /**
      9   * 题目2:顺序表相关算法的实验验证
     10  [实验目的]
     11  验证线性表的顺序存储及其上的基本操作。
     12  [实验内容及要求]
     13  定义顺序存储的线性表类。
     14  实验验证如下算法的正确性、各种功能及指标:
     15  1)创建可容纳M个结点的顺序表,(M10);
     16  2)在顺序表中第k个结点后插入一个新结点;
     17  3)存取顺序表中第k个结点的值;
     18  4)删除顺序表中第k个结点;
     19  5)顺序查找值为x的元素在顺序表中的位置(下标)。
     20  为便于观察程序的运行结果,设计的输出函数能在输出设备上以图形或表格或其它直观的形式展现、存储计算结果。
     21  测试程序时,对所有输入变量取遍各种有代表性的值。
     22  为了增强程序的可读性,程序中要有适当的注释。
     23   */
     24  #include <iostream>
     25  #include <cString>
     26  #include <stdlib.h>
     27  using namespace std;
     28  #define max_size 100
     29  
     30  class mArray{  //
     31  private:
     32      int *head;
     33      int count;
     34  public:
     35      mArray(){
     36          head = new int [max_size];
     37          count = 0;
     38          memset(head,0,sizeof(int));//clear to 0
     39      }
     40      ~mArray(){
     41          delete []head;
     42      }
     43      void insert(int value,int pos){
     44          if(pos<0)
     45          {
     46              cout<<"input error!";
     47              exit(1);
     48          }
     49          if(count>max_size){
     50              cout<<"array overflow!";
     51              exit(1);
     52          }
     53          if(pos>count){
     54              head[count]=value;
     55              count++;
     56              cout<<">element "<<value<<" had insert to posion "<<count<<endl;
     57              return ;
     58          }
     59          if(pos==count){
     60              head[pos]=value;
     61              count ++;
     62              cout<<"=element "<<value<<" had insert to posion "<<count<<endl;
     63              return ;
     64          }
     65          if(pos<count){ //insert and move the elements behind
     66              //cout<<count<<" "<<pos<<endl;
     67              for(int i = count ; i >= pos ;i--){
     68                  //move form the back
     69                  head[i+1] = head[i];
     70              }
     71              head[pos] = value;
     72              count++;
     73              cout<<"<element "<<value<<" had insert to posion "<<pos+1<<endl;
     74          }
     75  
     76  
     77  
     78      }
     79      int getValue(int pos){
     80          return head[pos-1];
     81      }
     82      void del(int pos){
     83          for(int i = pos ; i< count ;i++){
     84              head[i] = head[i+1];
     85          }
     86          count--;
     87          cout<<"element posion "<<pos+1<<" had deleted"<<endl;
     88      }
     89      int find(int value){
     90          for(int i = 0;i<count ;i++){
     91              if(getValue(i)==value)
     92                  return i;
     93          }
     94          cout<<"element \""<<value<<"\"not find"<<endl;
     95          return -1;
     96      }
     97      void print(){
     98          cout<<"链结:";
     99          for(int i = 0; i < count ;i++){
    100              cout<<head[i];
    101              cout<<"->";
    102          }
    103          cout<<endl;
    104      }
    105  
    106  };
    107  int main() {
    108      mArray m;
    109      m.insert(1,0);//add value 2 in 0 pos
    110      m.insert(2,1);
    111      m.insert(3,2);
    112      m.insert(5,5);
    113      m.print();
    114      m.insert(4,3);
    115      m.print();
    116      m.insert(7,2);
    117      m.print();
    118      m.insert(8,10);//special
    119      m.print();
    120      cout<<"element value 4'posion is "<<m.find(4)<<endl;
    121      cout<<"posion 2'value is "<<m.getValue(2)<<endl;
    122      m.del(3);
    123      m.print();
    124      return 0;
    125  }
    126  

    运行结果:

    转载文章请注明出处: http://www.cnblogs.com/menglei/
  • 相关阅读:
    DateUtil-工具类
    文件上传到服务器
    删除文件以及文件夹
    Git命令<转载 https://www.cnblogs.com/cspku/articles/Git_cmds.html>
    httpd似乎没有在运行,并且正在代理补鞋匠,或者SELinux正在这样做。
    【转载】使用yum安装服务报错:[Errno 14] curl#6
    Cobbler自动化安装部署操作系统
    恢复或重置root密码(Centos7)
    DNS服务器
    Windows Server 2008安装教程
  • 原文地址:https://www.cnblogs.com/menglei/p/2745317.html
Copyright © 2011-2022 走看看