課程名:資料結構
實驗目的:
1、掌握線性表的定義;
2、掌握線性表的基本操作,如建立、查詢、插入和刪除等。
實驗要求:定義乙個包含學生資訊(學號,姓名,成績)的順序表和煉表,使其具有如下功能:
(1) 根據指定學生個數,逐個輸入學生資訊;
(2) 逐個顯示學生表中所有學生的相關資訊;
(3) 根據姓名進行查詢,返回此學生的學號和成績;
(4) 根據指定的位置可返回相應的學生資訊(學號,姓名,成績);
(5) 給定乙個學生資訊,插入到表中指定的位置;
(6) 刪除指定位置的學生記錄;
(7) 統計表中學生個數。
實驗題目:線性表的基本操作及其作用
實驗過程:
按照實驗要求編寫相應程式**,並除錯執行。
附:順序表與鍊錶操作的主函式**。
執行演示過程如下(
這部分不需要寫到報告上):
1、 建立乙個學生表(5個學生);
2、 顯示該表中所有的元素;
3、 根據姓名查詢到第3個學生的資訊並顯示;
4、 插入乙個新的學生並顯示全部學生資訊;
5、 刪除第3個學生的資訊並顯示全部學生資訊;
6、 統計學生表中元素的個數(即學生人數);
7、 退出
實驗結果:
能夠順利完成順序表和單鏈表的建立、插入、刪除等操作。
實驗分析:
1、順序表和單鏈表在各種操作實現過程中的差別
2、程式除錯執行中出現的錯誤資訊原因分析。
definition of structure student
:
typedef struct student;
definition of sequential list:
typedef struct sqlist;
definition of linked list
:
typedef struct lnodelnode,*linklist;
實驗要求:
(1) 程式要新增適當的注釋,程式的書寫要採用
縮排格式。
(2) 程式要具在一定的健壯性,即當輸入資料非法時,程式也能適當地做出反應,如
插入刪除時指定的位置不對
等等。
(3) 程式要做到介面友好,在程式執行時使用者可以根據相應的提示資訊進行操作。
(4)上傳源程式到課堂派。順序表的源程式儲存為
sqlist.cpp
,鍊錶的源程式儲存為
linklist.cpp
code:
#include#include#include#include#include#include#include#include#define ok 1
#define error 0
//#define overflow -1
#define maxsize 100
using namespace std;
typedef int status; //定義函式返回值型別
typedef struct
student;
typedef student elemtype;
typedef struct
sqlist;
//typedef struct lnode
//lnode,*linklist;
status inilist(sqlist &l) //構造乙個空的順序表l
elemtype getelem(sqlist l,int i)
int locationelem(sqlist l,char str) //根據名字查詢,返回其在順序表中的序號
return 0;
}status listinsert(sqlist &l,int i,elemtype e) //在第i個位置插入學生資訊
status listdelete(sqlist &l,int i) //在順序表中刪除i位置的學生資訊
void input(elemtype &e) //輸入
void output(elemtype &e) //輸出
void function()
int main()
switch(choose)
l.length=x;
break;
case 3:
for(int i=1;i<=x;i++)
break;
case 4:
char s[20];
printf("請輸入要查詢的學生姓名:");
scanf("%s",s);
if(locationelem(l,s))
output(l.elem[locationelem(l,s)]);
else
puts("對不起,查無此人");
break;
case 5:
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;
case 7:
printf("請輸入要刪除的位置:");
int id3,ok;
scanf("%d",&id3);
printf("確認刪除學生資訊?\n確認請按1,取消請按2\n");
if(scanf("%d",&ok),ok==1)
else
}break;
case 8:
printf("已錄入的學生個數為:%d\n\n",l.length);
break; }
}return 0;
}
資料結構262 學生資訊管理
某班學生的資訊存放在乙個線性單鏈表中,但每學期都有學生因故退學。現要求根據退學學生的學號,將其資訊從鍊錶中刪除。假設學生的資料只儲存姓名 學號 性別,並採用結構體型別描述。若煉表中有退學學生,輸出刪除該學生後的學生資料 如果鍊錶中沒有該學生,則輸出錯誤資訊no。例1 lidong 1001 m zh...
資料結構262 學生資訊管理
試題名稱 學生資訊管理 時間限制 1 秒 記憶體限制 10000kb 問題描述 某班學生的資訊存放在乙個線性單鏈表中,但每學期都有學生因故退學。現要求根據退學學生的學號,將其資訊從鍊錶中刪除。假設學生的資料只儲存姓名 學號 性別,並採用結構體型別描述。輸入說明 輸入n個學生資料 1 n 10 每行乙...
第一次上機
1 已知a,b均是整型變數,寫出將a,b兩個變數中 的值互換的程式。知識點 變數和運算子綜合 應用 2 給定乙個0 1000的整數,求各位數的和,例 如345的結果是3 4 5 12注 分解數字既可以先 除後模也可以先模後除 知識點 變數和運算子 綜合應用 3 華氏溫度和攝氏溫度互相轉換,從華氏度變...