資料結構與演算法實驗1 線性表的應用之順序表

2021-10-10 21:11:17 字數 3048 閱讀 2254

————每天八杯水
一、目的要求

1.掌握線性表順序儲存結構的特點。

2.掌握線性表順序儲存結構的常見演算法。

二、實驗內容

1.輸入一組整型元素序列(不少於 10 個),建立順序表。

2.在該順序表中進行順序查詢某一元素,查詢成功返回 1,否則返回 0。 3.判斷該順序表中元素是否對稱,對稱返回 1,否則返回 0。 4.實現把該表中所有奇數排在偶數之前,即表的前面為奇數,後面為偶數。

5.輸入整型元素序列(不少於 10 個),利用有序表插入演算法建立乙個有序表。

6.利用演算法 5 建立兩個非遞減有序表,並把它們合併成乙個非遞減有序表。

7.在主函式中設計乙個簡單選單,呼叫上述演算法。

三、實驗說明

演算法 1 至演算法 6 的有關函式用標頭檔案方式儲存,主函式包含該標頭檔案。

儲存定義

const int maxsize=15 ; // 表中元素的最大個數

typedef int elemtype; // 元素型別

typedef struct list

sqlist ; // 順序表的型別名

建立順序表時,利用隨機函式自動產生資料

四、**

(一)標頭檔案

#pragma once

#include

#include

#include

using

namespace std;

const

int maxsize =15;

//最大元素個數定為15個

typedef

int elemtype;

//元素的型別

struct list

;//順序表的型別

typedef

struct list* seqlist;

seqlist setlist_seq

(int len)

//建立順序表

cout <<

"\n"

;return list;

}int

findelem

(seqlist list)

//查詢元素

} cout <<

"查詢失敗!!!"

}int

judgesymmetry

(seqlist list)

//判斷對稱

} cout <<

"不對稱!!!"

}int

oddeven

(seqlist list)

//奇數前偶數後

}for

(int i =

0; i < list-

>length; i++)}

cout <<

"奇數在前偶數在後:"

;for

(int i =

0; i < j; i++

) cout <<

"\n"

;return0;

}void

creadorderlist

(seqlist list)

//直接插入演算法排序有序遞增}}

cout <<

"使用直接插入演算法建立遞增有序表:"

;for

(int i =

0; i < list-

>length; i++

)//輸出元素

cout <<

"\n";}

void

compound

(seqlist list1,seqlist list2)

//兩個遞增有序表list和list2合併乙個遞增有序表

creadorderlist

(list1)

;//再把合成後的表進行直接插入演算法建立遞增有序表

}

(二)原始檔

#include

#include

"順序表應用.h"

using

namespace std;

seqlist setlist_seq

(int);

//1.輸入一組整型元素序列(不少於 10 個),建立順序表。

intfindelem

(seqlist)

;//2.在該順序表中進行順序查詢某一元素,查詢成功返回 1,否則返回 0。

intjudgesymmetry

(seqlist)

;//3.判斷該順序表中元素是否對稱,對稱返回 1,否則返回 0。

intoddeven

(seqlist)

;//4.實現把該表中所有奇數排在偶數之前,即表的前面為奇數,後面為偶數。

void

creadorderlist

(seqlist list)

;//5.輸入整型元素序列(不少於 10 個),利用有序表插入演算法建立乙個有序表。

void

compound

(seqlist,seqlist)

;//6.利用演算法 5 建立兩個非遞減有序表,並把它們合併成乙個非遞減有序表。

/*設計選單:

1.使用者輸入不少於10個元素建立順序表

2.查詢元素 成功1 失敗0

3.判斷元素是否對稱 是返回1 不是0

4.實現奇數在偶數前

5.利用插入演算法建立有序表

6.用演算法5建立兩個遞增有序表,再把他們合成乙個遞增有序表

*/int

main()

cout <<

"\n"

; cout <<

"請選擇你繼續的操作:"

; cin >> m;

}break;}

}

五、思考總結

1.**質量還有待高,由於時間水平有限,選單介面做得太粗糙了,下次一定公升級選單介面。

2.知識點方面:此實驗出現了判斷元素對稱、用直接插入演算法建立有序遞增表和奇數在前偶數在後三個新思想,初次構想有些細節還沒有考慮到。

資料結構實驗1 線性表 鍊錶

線性表的順序儲存與鍊錶儲存,實現資料插入 刪除運算。將1中儲存結構改為迴圈鍊錶 雙向鍊錶 迴圈雙向鍊錶等,實現資料插入 刪除。線性表 include include include define ok 1 define error 0 define overflow 0 define list in...

資料結構與演算法基礎 線性表(1)

線性表是具有相同特性的資料元素的乙個有限序列。線性表的邏輯特徵 例1 一元多項式 pn x p0 p1x p2x2 p3x3 pnxn.線性表p p0,p1,p2,p3,pn 每一項的指數 i 都隱藏其係數的pi的序號中 如 p x 5 6x 2x2 3x3.那麼我們可以用陣列來表示。指數 下標i ...

資料結構與演算法筆記(1) 線性表

時間複雜度與空間複雜度 時間複雜度即執行時間的需求,空間複雜度即對空間的需求線性表 線性表記為 a1,a2,ai 1,ai,ai 1,an 則ai 1為ai的直接前驅元素,ai 1為ai的直接後繼元素,存在多個元素的前提下,第乙個元素無前驅,最後乙個元素無後繼,其他元素都有且只有乙個前驅和乙個後繼。...