一、實驗名稱和性質
所屬課程 資料結構與演算法
實驗名稱 順序表的操作
實驗學時 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...