zoukankan      html  css  js  c++  java
  • 数据结构学习记录连载1

     1.题目:基本要求:1) 建立线性表的顺序表类SeqList,

         提高要求:在顺序表类SeqList增加一个删除函数,要求删除顺序表中等于item的所有元素。

    1.SeqList.h:

    /*
    * Copyright (c) 2009,FreshAir团队嵌入式软件研发组
    * All rights reserved.
    *
    * 文件名称:SeqList.h
    * 摘 要: 定义顺序表类
    *
    * 当前版本:1.0
    * 作 者: 吴友强
    * 完成日期:2009年10月12日
    *
    * 取代版本:
    * 原作者 :
    * 完成日期:
    */

    #include <stdlib.h>
    #include <iostream.h>

    typedef int DataType;
    const int MaxListSize = 100;

    class SeqList
    {
    private:
     DataType data[MaxListSize];
     int size;
    public:
     SeqList(void);
     ~SeqList();
     int GetListSize(void) const;    //返回顺序表的元素个数size
     int ListIsEmpty(void) const;    //判顺序表空否,为空返回1,不空返回0
     int Find(DataType& item) const;    //定位元素item的位置,返回值为item在顺序表中的位置
     DataType GetData(int pos) const;   //返回顺序表中位置pos上的元素
     void Insert(const DataType& item,int pos); //在指定位置pos处插入一个数据元素item
     DataType Delete(const int pos);    //删除指定位置pos上的数据元素并返回
        void ClearList(void);      //置顺序表为空
    };

     

    2.SeqList.cpp:

    /*
    * Copyright (c) 2009,FreshAir团队嵌入式软件研发组
    * All rights reserved.
    *
    * 文件名称:SeqList.cpp
    * 摘 要: 顺序表类的各个函数实现
    *
    * 当前版本:1.0
    * 作 者: 吴友强
    * 完成日期:2009年10月12日
    *
    * 取代版本:
    * 原作者 :
    * 完成日期:
    */

    #include "SeqList.h"

    SeqList::SeqList(void)
    {
     size = 0;
    }

    SeqList::~SeqList()
    {

    }

    /*
    * 函数名称: GetListSize
    * 输 入:
    * 输 出:
    * 功能描述: 返回顺序表的元素个数size
    * 作 者: 吴友强
    * 日 期: 2009年10月12日
    * 修 改:
    * 日 期:
    */
    int SeqList::GetListSize() const
    {
     return size;
    }

    /*
    * 函数名称: ListIsEmpty
    * 输 入:
    * 输 出:
    * 功能描述: 判顺序表空否,为空返回1,不空返回0
    * 作 者: 吴友强
    * 日 期: 2009年10月12日
    * 修 改:
    * 日 期:
    */
    int SeqList::ListIsEmpty() const
    {
     return size == 0 ? 1 : 0;
    }

    /*
    * 函数名称: Find
    * 输 入:item
    * item:需要查找的元素
    * 输 出:
    * 功能描述: 定位元素item的位置,返回值为item在顺序表中的位置;返回值为-1表示不存在
    * 作 者: 吴友强
    * 日 期: 2009年10月12日
    * 修 改:
    * 日 期:
    */
    int SeqList::Find(DataType& item) const
    {
     int i;

     if (size == 0)
     {
      return -1;
     }
     for (i=0; i<size; i++)
     {
      if (data[i] == item)
      {
       break;
      }
     }

     if (i < size)
     {
      return i;
     }
     else
     {
      return -1;
     }
    }

    /*
    * 函数名称: GetData
    * 输 入:pos
    * pos:需要得到数据的位置
    * 输 出:
    * 功能描述: 定位元素item的位置,返回值为item在顺序表中的位置;返回值为-1表示不存在
    * 作 者: 吴友强
    * 日 期: 2009年10月12日
    * 修 改:
    * 日 期:
    */
    DataType SeqList::GetData(int pos) const
    {
     if (pos < 0 || pos > size-1)
     {
      cerr << "参数pos越界出错!" << endl;
      exit(1);
     }

     return data[pos];
    }

    /*
    * 函数名称: Insert
    * 输 入: pos,item
    * pos: 需要插入数据的位置
    * item: 需要插入的数据
    * 输 出:
    * 功能描述: 在指定位置pos处插入一个数据元素item
    * 作 者: 吴友强
    * 日 期: 2009年10月12日
    * 修 改:
    * 日 期:
    */
    void SeqList::Insert(const DataType& item,int pos)
    {
     if (size == MaxListSize)
     {
      cerr << "顺序表已满无法插入!" << endl;
      exit(1);
     }

     if (pos < 0 || pos > size)
     {
      cerr << "参数pos越界出错!" << endl;
      exit(1);
     }
     
     for (int i=size-1; i>=pos; i--)
     {
      data[i+1] = data[i];
     }
     data[pos] = item;
     size++;
    }

    /*
    * 函数名称: Delete
    * 输 入: pos,item
    * pos: 需要删除数据的位置
    * 输 出:
    * 功能描述: 删除指定位置pos上的数据元素并返回
    * 作 者: 吴友强
    * 日 期: 2009年10月12日
    * 修 改:
    * 日 期:
    */
    DataType SeqList::Delete(const int pos)
    {
     DataType temp;
     if (0 == size)
     {
      cerr << "顺序表已空无元素可删!" << endl;
      exit(1);
     }
     if (pos < 0 || pos > size-1)
     {
      cerr << "参数pos越界出错!" << endl;
      exit(1);
     }

     temp = data[pos];
     for (int i=pos; i<size-1; i++)
     {
      data[i] = data[i+1];
     }

     size--;
     return temp;
    }

    /*
    * 函数名称: ClearList
    * 输 入: 
    * 输 出:
    * 功能描述: 置顺序表为空
    * 作 者: 吴友强
    * 日 期: 2009年10月12日
    * 修 改:
    * 日 期:
    */
    void SeqList::ClearList()
    {
     size = 0;
    }

     

    3.SeqListTest.cpp:

    /*
    * Copyright (c) 2009,FreshAir团队嵌入式软件研发组
    * All rights reserved.
    *
    * 文件名称:SeqListTest.cpp
    * 摘 要: 测试程序
    *
    * 当前版本:1.0
    * 作 者: 吴友强
    * 完成日期:2009年10月12日
    *
    * 取代版本:
    * 原作者 :
    * 完成日期:
    */

    #include "SeqList.h"

    int main(int argc, char *argv[])
    {
     SeqList seqlist;

     for (int i=0; i<10; i++)
     {
      seqlist.Insert(i+10, i);
     }

     cout << "测试GetData()成员函数结果如下:" << endl;
     for(i=0; i<10; i++)
     {
      cout << seqlist.GetData(i) << " ";
     }
     
     cout<< endl << "测试Delete()成员函数结果如下" << endl;
     for(i=0; i<10; i++)
     {
      cout<<seqlist.Delete(0)<<" "<<endl;
     }

     return 0;
    }

  • 相关阅读:
    团队冲刺第三天
    NoSQL数据库基础概述
    团队开发冲刺第九天
    团队开发冲刺第八天
    团队开发冲刺第七天
    团队开发冲刺第六天
    团队开发冲刺第五天
    团队开发冲刺第四天
    团队开发冲刺第三天
    第九周总结
  • 原文地址:https://www.cnblogs.com/brucewoo/p/2252052.html
Copyright © 2011-2022 走看看