數據結構學習記錄連載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;
}
浙公網安備 33010602011771號