一、實驗目的
(1)掌握線性表的順序儲存結構;
(2)驗證順序表及其基本操作的實現;
(3)理解演算法與程式的關係,將順序表演算法轉換成對應的程式。
二、實驗內容
建立乙個由n個學生成績的順序表,n的大小由自己確定,每乙個學生的成績資訊由自己確定,實現資料的對錶進行插入、刪除、查詢等操作。分別輸出結果。
用順序表來實現。
三、實驗步驟
1、依據實驗內容分別說明實驗程式中用到的資料型別的定義。
seqlist()//無參建構函式,建立乙個空表
seqlist(int a,int n);//有參建構函式
~seqlist(){}//析構函式
int delete(int i);//刪除線性表的第i個元素
int locate(int x);//求線性表中值為x的元素序號
void printlist();//按序號依次輸出各元素
2、相關操作的演算法表達
定義順序表的資料型別——順序錶類seqlist,包括插入、刪除、查詢、輸出等基本操作。
插入操作:1.如果表滿了,則丟擲上溢異常;
2.如果元素的插入位置不合理,則丟擲位置非法;
3.將最後乙個元素直至第i個元素分別向後移動乙個位置;
4.將元素x填入位置i處;
5.表長加1。
刪除操作:1.如果表空,則丟擲下溢異常;
2.如果刪除位置不合理,則丟擲刪除位置非法;
3.取出被刪除元素;
4.將下標為i,i+1,…,n-1處的元素分別移到下標i-1,i,…,n-2處;
5.表長減1,返回被刪除值。
查詢操作:
(1)按位查詢
1. 在順序表中查詢第i個元素儲存在陣列中下標為i-1的位置;
2. 找到即輸出資料。
(2)按值查詢
1.從第一位開始依次查詢與x值相同的元素;
2.找到即輸出下標為i的元素的序號i+1;
3.查詢失敗即退出迴圈。
輸出操作:
1.按照下標,依次輸出各元素。
源**如下:
#ifndef seqlist_h
#define seqlist_h
const int maxsize=10;
class seqlist
public:
seqlist()//無參建構函式,建立乙個空表
seqlist(inta,int n);//有參建構函式
~seqlist(){}//析構函式
intdelete(int i);//刪除線性表的第i個元素
intlocate(int x);//求線性表中值為x的元素序號
voidprintlist();//按序號依次輸出各元素
private:
intdata[maxsize];//存放資料元素的陣列
intlength;//線性表的長度
#endif
#include
using namespace std;
#include "seqlist.h"
seqlist::seqlist(int a,int n)
if(n>maxsize)throw"引數非法";
for(inti=0;idata[i]=a[i];
length=n;
void seqlist::insert(int i,int x)
if(length>=maxsize)throw"上溢";
if(i<1||i>length+1)throw"位置非法";
for(intj=length;j>=i;j--)
data[j]=data[j-1];//第j各元素存在陣列下標為j-1處
data[i-1]=x;
length++;
int seqlist::delete(int i)
if(length==0)throw"下溢";
if(i<1||i>length)throw"位置非法";
intx=data[i-1];
for(intj=i;jdata[j-1]=data[j];//此處j已經是元素所在的陣列下標
length--;
returnx;
int seqlist::locate(int x)
for(inti=0;iif(data[i]==x)returni+1;//下標為i的元素其序號為i+1
return0;//退出迴圈,說明查詢失敗
void seqlist::printlist()
for(inti=0;icout
using namespace std;
#include"seqlist.h"
void main()
intr[5]=;
seqlistl(r,5);
cout<
tryl.insert(2,81);//在第2個位置插入值為81的元素
catch(char*s)
cout
cout<
cout
tryl.delete(3);//刪除第3個元素
catch(char*s)
cout
執行結果如圖.
學生表 用順序表實現
實驗內容 定義乙個包含學生資訊 學號,姓名,成績 的的順序表,使其具有如下功能 1 根據指定學生個數,逐個輸入學生資訊 2 逐個顯示學生表中所有學生的相關資訊 3 根據姓名進行查詢,返回此學生的學號和成績 4 根據指定的位置可返回相應的學生資訊 學號,姓名,成績 5 給定乙個學生資訊,插入到表中指定...
用C 實現順序表
seqlist.h include include using namespace std typedef int datatype class seqlist delete array array null array newarray capacity 2 capacity private da...
用順序表實現棧
棧是一種有約束的順式結構,他需要遵循先進後出,後進先出的基本規則,我們可以用順序表和煉表兩種方式來實現 因為簡單就意味著不容易出錯,所以在這裡我使用順序表來實現棧 stack.h pragma once include include 對於棧我們可以用順序表和煉表來實現,棧的 並不難,在此處,為了省...