線性表建立學生資訊表

2021-10-02 04:00:37 字數 4138 閱讀 5154

在實驗課上,要求操作線性表的基本操作及其應用,這是第一次實驗,用到得是順序表結構。

課程名:資料結構

實驗目的:(1)掌握線性表的定義;

(2)掌握線性表的基本操作,如建立、查詢、插入和刪除等。

實驗要求:定義乙個包含學生資訊(學號,姓名,成績)的順序表,使其具有如下功能:

(1)根據指定學生個數,逐個輸入學生資訊;

(2)逐個顯示學生表中所有學生的相關資訊;

(3)根據姓名查詢,返回此學生的學號和成績;

(4)根據指定的位置可返回相應的學生資訊(學號,成績,姓名);

(5)給定乙個學生資訊,插入到表中指定的位置;

(6)刪除指定位置的學生記錄;

(7)統計表中學生個數。

實驗題目:線性表的基本操作及其應用

實驗過程:按照實驗要求編寫相應程式**,並除錯執行。

:順序表的主函式**。

首先初始化順序表,也就是構造乙個空的順序表。

【演算法描述】

status initlist

(sqlist &l)

//構造空的順序表l

取值:根據指定的位置序號i,獲取順序表中第i個資料元素的值。這個獲取,可以通過陣列下標定位得到,elem[i-1]單元儲存第i個資料元素。

【演算法描述】

status getelem

(sqlist l,

int i,elemtype &e)

查詢:根據指定的元素值e,查詢順序表中第1個與i相等的元素。若查詢成功,則返回該元素在表中的位置序號;若失敗,返回0。

【演算法描述】

int

locateelem

(sqlist l,elemtype e)

插入:在表的第i個位置插入乙個新的資料元素e,使長度為n的線性表變為長度為n+1的線性表。

【演算法描述】

status listinsert

(sqlist &l,

int i,elemtype e)

刪除:將表中的第i個元素刪去,將長度為n的線性表變成長度為n-1的線性表。

【演算法描述】

status listdelete

(sqlist &l,

int i)

以上就是將要用到的順序線性表的一些基本操作及其相關演算法。下面我們就對這次實驗的要求所寫的程式進行編寫:

有了上面的基本操作,剩下的就是主函式部分,當然,你也可以對這些基本操作進行適當的修改,不過在寫主函式之前,還得對這個表進行輸入東西,輸入的是什麼呢?肯定就是實驗要求的東西啦,本次實驗輸入的就是一些學生資訊(姓名,學號,成績)。

【演算法描述】

void

input

(elemtype *e)

//輸入

當然,有輸入就要有輸出,不然輸入的東西有什麼意義呢?不過,在程式中,就算沒有輸入,也至少有乙個輸出,即只要是程式,就會要輸出。輸出的演算法如下:

【演算法描述】

void

output

(elemtype &e)

//輸出

現在就只剩主函式部分了,那就直接上完整的**:

【完整**】

#include

#include

#include

#include

#define ok 1

#define error 0

#define overflow -2

#define maxsize 100

typedef

int status;

// 定義函式返回值型別

typedef

struct

student;

typedef student elemtype;

typedef

struct

sqlist;

status initlist

(sqlist *l)

// 構造空的順序表 l

elemtype getelem

(sqlist &l,

int i)

// 訪問順序表,找到 i位置,返回給 e

intsearch

(sqlist &l,

char str)

// 根據名字查詢,返回該同學在順序表中的編號

return0;

}

status listinsert

(sqlist &l,

int i,elemtype e)

// 在 i位置插入某個學生的資訊

l.elem[i]

=e;//將新元素e放入第i個位置

++l.length;

return ok;

}

status listdelete

(sqlist &l,

int i)

// 在順序表中刪除 i位置的學生資訊

--l.length;

//長度減一

return ok;

}void

input

(elemtype *e)

//輸入

void

output

(elemtype &e)

//輸出

intmain()

l.length=x;

break

;case3:

for(

int i=

1;i<=x;i++

)break

;case4:

char s[20]

;printf

("請輸入要查詢的學生姓名:");

scanf

("%s"

,s);if(

search

(l,s)

)output

(l.elem[

search

(l,s)])

;else

printf

("對不起,查無此人\n");

printf(""

);break

;case5:

printf

("請輸入要查詢的位置:");

int id1;

scanf

("%d"

,&id1)

; b=

getelem

(l,id1)

;output

(b);

break

;case

6:

printf (

"請輸入要插入的位置:");

int id2;

scanf

("%d"

,&id2)

;printf

("請輸入學生資訊:\n");

input

(&c);if

(listinsert

(l,id2,c)

)else

break

;case7:

printf

("請輸入要刪除的位置:");

int id3;

scanf

("%d"

,&id3);if

(listdelete

(l,id3)

)else

break

;case8:

printf

("已錄入的學生個數為:%d\n\n"

,l.length)

;break;}

}printf

("\n\n請按任意鍵退出\n\n");

return0;

}

**就是這樣,如果有什麼錯誤的地方,懇請大牛們指出糾正,非常感謝!

建立線性表

include include include include list.h 函式名 createlist 函式功能 建立線性表 引數 無 list createlist void return plist 函式名 destroylist 函式功能 銷毀線性表 函式返回值 無。void destro...

Problem E 建立鍊錶 線性表

time limit 1 sec memory limit 128 mb submit 323 solved 207 線性表 設鍵盤輸入n個英語單詞,輸入格式為n,w1,w2,wn,其中n表示隨後輸入英語單詞個數,試編一程式,建立乙個單向鍊錶,實現 如果單詞重複出現,則只在鍊錶上保留乙個。4 now...

線性表綜合例項之學生資訊管理系統

前面兩次分別講了線性表的兩種結構,接下來要來運用到實際生活當中。接下來的例子用的是鍊錶,因為順序結構的線性表比較好理解,可在看過此文章自行實現,而且絕大多數都是使用鍊錶來組織結構。所以就用鍊錶來講解。首先我們要先想好乙個學生應有的資訊 姓名 年齡 性別 學號 出生日期等一些基本資訊。然後建立乙個學生...