1. 程式人生 > >資料結構 之 線性表的實現

資料結構 之 線性表的實現

 程式碼:

#include<algorithm>
#include<iostream>
#include<stdlib.h>
#define MAXSIZE 1100
using namespace std;
/*
線性表的實現
1.插入//ok
2.刪除//ok
3.在尾部增加//ok
4.從尾部彈出//ok
5.是否為空//ok
6.查詢//ok
7.根據下標獲取線性表中的值//ok
*/
//線性表的資料結構
class LineTable{
  private:
    int date[MAXSIZE];
    int maxsize;//最大容量
    int size;//當前元素個數
  public:
    LineTable()
    {
        maxsize=MAXSIZE;
        size=0;
    }
    bool push_back(int val)
    {
        if(size==MAXSIZE)
            return 0;//插入失敗
        date[size++]=val;
        return 1;
    }
    bool  pop_back(int &val)//從尾部彈出並返回該值
    {
        if(!size)
            return 0;
        val=date[--size];
        return 1;
    }
    bool empty()
    {
        if(!size)
            return 1;
        return 0;
    }
    bool find(int val,int &index)
    {
        for(int i=0;i<size;++i)
        {
            if(date[i]==val)
            {
                index=i;
                return 1;
            }
        }
        return 0;
    }
    bool erase(int sub,int &val)//
    {
        if(sub>=0&&sub<size)
        {
            for(int i=sub;i<size-1;++i)
                date[i]=date[i+1];
            --size;
            return 1;
        }
        return 0;
    }
    bool index(int sub,int &val)
    {
        if(sub<size&&sub>=0)
        {
            val=date[sub];
            return 1;
        }
        return 0;
    }
    bool insert(int index,int val)
    {
        if(size<MAXSIZE&&index>=0&&index<size)
        {
            for(int i=size-1;i>=index;--i)
                date[i+1]=date[i];
            return 1;
            ++size;
        }
        return 0;;
    }
    bool print()
    {
        for(int i=0;i<size;++i)
            printf("%d%c",date[i],i==size-1?'\n':' ');
        return 1;
    }
};
int main()
{
    LineTable dch;
    int val;
    dch.push_back(1);
    dch.push_back(2);
    dch.push_back(3);
    dch.print();
    dch.erase(1,val);
    dch.print();
}

改進:加異常處理可好