順序表的操作實驗

2021-10-22 11:50:23 字數 3800 閱讀 1079

一、實驗名稱和性質

所屬課程 資料結構與演算法

實驗名稱 順序表的操作

實驗學時 2

實驗性質 √驗證 □綜合 □設計

必做/選做 √必做 □選做

二、實驗目的

1.掌握線性表的順序儲存結構的表示和實現方法。

2.掌握順序表基本操作的演算法實現。

3.了解順序表的應用。

三、實驗內容

1.建立含n個資料元素的順序表並輸出該表中各元素的值。

2.在有序順序表l中插入元素x使線性表仍然有序。

3.寫乙個函式刪除有序順序表中的重複元素。

四、知識準備

前期要求熟練掌握了c語言的程式設計規則、方法和順序表的基本操作演算法。

五、實驗要求

程式設計實現如下功能:

(1)根據輸入順序表的長度n和各個資料元素值建立乙個順序表,輸出順序表中各元素值,對比是否操作成功。

(2)根據輸入的n個非遞減的有序資料建立乙個有序順序表,並輸出有序順序表中各元素值。在有序順序表l中乙個值為x的元素,並輸出插入後順序表仍然有序,輸出插入後的順序表中各元素值。

(3)刪除有序順序表中重複的元素,並輸出刪除後的順序表中各元素值。

六、擴充套件實驗題

程式設計實現乙個簡單學生成績表的操作。

此系統的功能包括:

① 查詢:按特定的條件查詢學生

② 修改:按學號對某個學生的某門課程成績進行修改

③ 插入:增加新學生的資訊

④ 刪除:按學號刪除已退學的學生的資訊。

學生成績表的資料如下:

學號 姓名 性別 大學英語 高等數學

2008001 alan f 93 88

2008002 danie m 75 69

2008003 helen m 56 77

2008004 bill f 87 90

2008006 peter m 79 86

2008006 amy f 68 75

要求採用順序儲存結構來實現對上述成績表的相關操作。

今天下午資料結構與演算法開始做順序表的實驗了,本以為掌握的不錯,但是一動手開始寫的時候還是有些忐忑不安。(結果記不起來學的知識!)還是太菜了,所以晚自習看了很多的資料,決定要把知識點梳理一遍,把題目完完全全做出來。

先看第乙個:建立含n個資料元素的順序表並輸出該表中各元素的值。

題目單純的是順序表,沒有其他的記錄,所以只要構建乙個順序表,順序表裡包含表中所要儲存的資料段,即data[i]陣列,下標盡量取大一點。同時結構體中還包含這個順序表的實際長度len。是否巨集定義都沒關係,有個概念就行。接著大致上是在順序表中讀入資料,再原封不動地輸出即可。在這裡形參我使用的是指標,而不是引用,因為我更喜歡指標,用不用的好那就是另一回事了~請大家多多指教!下面是我第一次寫的錯誤**:

#include

//不要忘記標頭檔案!

#include

#include

#include

#include

#include

#define maxlen 10000

using

namespace std;

typedef

struct sqlist

;void

creatlist

(sqlist *l)

else

if(l-

>len > maxlen)

for(

int i =

0; i < n; i++

)for

(int i =

0; i < n; i++)}

intmain()

在課上越看越急,以至於根本沒發現自己沒有申請記憶體!說都是順序表了,不申請記憶體系統才不會幫你留位置嘞。所以要申請記憶體,後一章的鍊錶也是,不過當時實驗室先講的是鍊錶~繼續,

同時自己寫的時候沒有規定順序表的實際長度,本來應該是l->len=n,但是沒有寫,應該加在輸入資料之後的。改了之後:

#include

#include

#include

#include

#include

#define maxlen 10000

using

namespace std;

typedef

struct

sqlist;

void

creatlist

(sqlist *l,

int n)

else

if(l-

>len > maxlen)

for(

int i =

0; i < n; i++

) l-

>len = n;

//好傢伙我直接傻眼!

for(

int i =

0; i < n; i++)}

intmain()

結果還是錯的!(說實話輸入和輸出都寫在一起了???)

改!

#include

#include

#include

#define maxlen 10000

using

namespace std;

typedef

struct

seqlist;

void

creatlist

(seqlist *l,

int n)

//建立順序表

l->len = n;

}void

putlist

(seqlist *l)

//輸出順序表

終於對了!(謝天謝地了)

第二個:在有序順序表l中插入元素x使線性表仍然有序

當然首先還是要有順序表。

#include

#include

#include

#include

#define maxlen 10000

using

namespace std;

typedef

struct

seqlist;

void

creatlist

(seqlist *l)

l->len = n;

}void

insertlist

(seqlist *l,

int x)

else

if(l-

>data[i]

>= x && l-

>data[i +1]

< x)}}

void

putlist

(seqlist *l)

cout << endl;

}int

main()

今天時間不太夠了,剩下的明天再寫。先回寢室了!加油!

順序表的基本操作 順序表基本操作上機實驗

理解線性結構的基本概念,掌握兩種基本的儲存結構 順序儲存結構 順序表 和鏈式儲存結構 單鏈表 用c語言實現在兩種儲存結構上的對應操作 包括建立 刪除插入元素 遍歷等 鞏固強化c程式設計的基本方法和能力。完成順序表的建立 元素刪除 遍歷等操作,具體內容如下 有序的一組整數 1,2,3,4,6 設計順序...

順序表的操作實驗 資料結構

1 掌握線性表的順序儲存結構的表示和實現方法。2 掌握順序表基本操作的演算法實現。3 了解順序表的應用。1 建立順序表。2 在順序表上實現插入 刪除和查詢操作 驗證性內容 3 刪除有序順序表中的重複元素 設計性內容 4 完成乙個簡單學生成績管理系統的設計 應用性設計內容 1.硬體環境要求 pc機 單...

資料結構實驗 順序表的基本操作

include 1 1儲存結構 define maxsize 100 typedef struct sqlist 1 2初始化順序表並放入n個資料 void initlist sqlist l 1 3初始化順序表並放入n個資料 void listinsert sqlist l,int i,int e...