實驗3 用順序表來實現

2021-08-19 16:23:26 字數 2585 閱讀 8015

一、實驗目的

(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 對於棧我們可以用順序表和煉表來實現,棧的 並不難,在此處,為了省...