實驗二:順序表的基本操作實現及其應用
1.建立一個由8位同學成績的順序表,實現資料的插入,刪除,查詢等操作,分別輸出結果。
#include<iostream>
using namespace std;
const int max=100;
template <typename T>
class SeqList{
public:
SeqList(T score[],int n); //建構函式,建立一個長度為n的順序表
~SeqList(){} //解構函式
void insert(int i,T x); //插入操作,在位置i插入元素x
T Delete(int i); //在位置i刪除對應元素
T get(int i); //按位查詢,找位置i的元素
int locate(T x); //按值查詢,找數值為x的元素
void print(); //遍歷操作,按序號依次輸出各元素
private:
T data[max]; //存放資料元素的陣列
int length; //線性表的長度
};
//建構函式
template <class T>
SeqList<T>::SeqList(T score[],int n)
{
if(n>max)throw"引數非法";
for(int i=0;i<n;i++)
data[i]=score[i];
length=n;
}
//插入操作
template <class T>
void SeqList<T>::insert(int i,T x)
{
int j;
if(length>max)throw"上溢";
if(i<1||i>=max)throw"位置非法";
for(j=length;j>=i;j--)
data[j]=data[j-1];
data[i-1]=x;
length++;
}
//刪除操作
template <class T>
T SeqList<T>::Delete(int i)
{
T p;int j;
if(length==0)throw"下溢";
if(i<1||i>=max)throw"位置非法";
p=data[i-1];
for(j=i;j<length;j++)
data[j-1]=data[j];
length--;
return p;
}
//查詢操作
//按位查詢
template <class T>
T SeqList<T>::get(int i)
{
if(i<1&&i>=length)throw"查詢位置非法";
else return data[i-1];
}
//按值查詢
template <class T>
int SeqList<T>::locate(T x)
{
for(int i=0;i<length;i++)
if(data[i]==x) return i+1; //返回元素序號
return 0;
}
//輸出操作
template <class T>
void SeqList<T>::print()
{
for(int i=0;i<length;i++)
cout<<data[i]<<" ";
}
void main()
{
float score[8]={90.5,77,87.5,65,100,84.5,72,66.5};
SeqList<float> student(score,8);
cout<<" 學生資料結構成績"<<endl;
student.print();
cout<<endl<<endl<<"在位置3插入成績99,結果如下:"<<endl;
student.insert(3,99);
student.print();
cout<<endl<<endl<<"在位置5刪除成績為:"<<student.Delete(5)<<endl<<"刪除後結果如下:"<<endl;
student.print();
cout<<endl<<endl<<"位置6的成績為:"<<student.get(6)<<endl;
cout<<endl<<endl<<"成績100所在位置為:"<<student.locate(100)<<endl;
}
問題:當輸入資料上溢或者下溢的時候程式碼直接崩掉,而不是輸出上溢或下溢。
缺點:每次插入或刪除時需要移動大量資料
相關文章
- 資料結構實驗一:順序表的建立與操作實現、順序表實現約瑟夫環問題資料結構
- 資料結構c語言實現順序表基本操作資料結構C語言
- 順序表的實現
- 順序表的基本方法實現C語言版C語言
- 順序表實現二分排序排序
- Java實現順序表Java
- DS順序表--類實現
- 線性表的使用——順序實現
- 順序表應用5:有序順序表歸併
- 順序表應用6:有序順序表查詢
- 南郵資料結構實驗1.1:順序表的相關操作資料結構
- 第2章 順序表及其順序儲存
- python實現基本資料結構第二篇(順序棧、鏈棧,順序隊、鏈隊)Python資料結構
- 線性表-順序表C語言實現C語言
- 順序棧的實現方式
- 關於JAVA中順序IO的基本操作Java
- 線性表的順序儲存C++程式碼實現C++
- 「Python實用祕技07」在pandas中實現自然順序排序Python排序
- 圖的基本操作和實現
- 線性表及其實現
- 順序賦值的方式實現流水燈賦值
- 基礎資料結構(一)---(最全)定長順序表的實現資料結構
- MQ實現兩個應用系統之間的通訊-----實際操作(二)MQ
- 資料結構_順序表_順序表的初始化、插入、刪除、修改、查詢列印(基於C語言實現)資料結構C語言
- 資料結構初階--二叉樹介紹(基本性質+堆實現順序結構)資料結構二叉樹
- 《資料結構》實驗08--樹及其應用資料結構
- 順序表
- 具體實現程式碼@資料結構探險——順序表資料結構
- 資料結構:線性表(Python實現基本操作)資料結構Python
- 實驗四 棧和佇列的基本操作佇列
- 實驗2.2 線性表的應用:遊戲遊戲
- 順序審批流的簡單程式碼實現
- 手把手教你用java實現二分查詢樹及其相關操作Java
- 順序表的學習
- 順序表的堆排序排序
- 多執行緒實現順序迴圈列印執行緒
- 順序棧與鏈式棧的圖解與實現圖解
- Promise實現的基本原理(二)Promise