天津理工大學(xué) c語(yǔ)言上機(jī)報(bào)告8
《天津理工大學(xué) c語(yǔ)言上機(jī)報(bào)告8》由會(huì)員分享,可在線閱讀,更多相關(guān)《天津理工大學(xué) c語(yǔ)言上機(jī)報(bào)告8(12頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、計(jì)算機(jī)與通信工程學(xué)院 天津理工大學(xué) 計(jì)算機(jī)與通信工程學(xué)院 實(shí)驗(yàn)報(bào)告 (試做) 2009 至 2010 學(xué)年 第 一 學(xué)期 課程名稱 高級(jí)程序設(shè)計(jì)語(yǔ)言 I 學(xué)號(hào) 學(xué)生姓名 年級(jí) 專業(yè) 教學(xué)班號(hào) 實(shí)驗(yàn)地點(diǎn) 實(shí)驗(yàn)時(shí)間 20 年 月 日 第 節(jié) 至 第 節(jié) 主講教師 孫世溫 輔導(dǎo)教師 實(shí)驗(yàn)(八) 實(shí)驗(yàn)名稱 結(jié)構(gòu)體和聯(lián)合 軟件環(huán)境 Win XP、Visual
2、 C++ 6.0 硬件環(huán)境 PC 實(shí)驗(yàn)?zāi)康? (1) 掌握結(jié)構(gòu)體類型的定義和使用; (2) 掌握結(jié)構(gòu)體類型變量的概念和使用; (3) 掌握鏈表的概念,初步學(xué)會(huì)對(duì)鏈表進(jìn)行操作; (4) 掌握共用體的概念和使用; (5) 進(jìn)一步熟悉Visual C++6.0開發(fā)環(huán)境下調(diào)試程序的基本步驟。 實(shí)驗(yàn)內(nèi)容(應(yīng)包括實(shí)驗(yàn)題目、實(shí)驗(yàn)要求、實(shí)驗(yàn)任務(wù)等) (1) 利用順序表實(shí)現(xiàn)“先進(jìn)后出”的堆棧 l 結(jié)構(gòu)體定義: // 結(jié)構(gòu)體 Stack struct Stack{ int * List; // 用來(lái)存儲(chǔ)元素的順序表 int curNumber; // 用來(lái)存儲(chǔ)當(dāng)前元素的總個(gè)數(shù)
3、 }; l 函數(shù)原型: void iniStack(Stack * A); // 初始化堆棧 void clearStack(Stack * A); //清空堆棧 void push(Stack * A, ELEMENT obj); //將元素obj壓入堆棧的棧頂 void pop(Stack * A); //將當(dāng)前棧頂?shù)脑貜棾鰲?。要求:棧不為? ELEMENT get_top(Stack * A); //返回當(dāng)前棧頂?shù)脑刂?。要求:棧不為? int is_empty(Stack * A); //判斷當(dāng)前堆棧是否為空,空返回1,非空返回0 void
4、display(Stack * A); //自頂向下顯示堆棧中的元素 (2) 已知學(xué)生基本信息由學(xué)號(hào)(長(zhǎng)整型)、姓名(字符數(shù)組)、性別(字符型)、年齡(整型)組成。定義如下結(jié)構(gòu)類型: l 結(jié)構(gòu)體定義: // 定義結(jié)構(gòu)體:存儲(chǔ)學(xué)生基本信息 struct STUDENT_NODE { long int id; char name[MAX_LEN]; char sex; int age; // 指針指向下一個(gè)結(jié)點(diǎn),用以形成鏈表 STUDENT_NODE *next; }; //定義結(jié)構(gòu)體:存儲(chǔ)單向鏈表 struct STUDENT_LIN
5、K{ STUDENT_NODE *top; }; l 函數(shù)原型: void iniStudentLink(STUDENT_LINK * L); // 初始化學(xué)生鏈表 void clearStudentLink(STUDENT_LINK * L); //清空學(xué)生鏈表 int isExist(STUDENT_LINK * L, long int id); // 判斷該學(xué)號(hào)的學(xué)生信息是否存在 int Add(STUDENT_LINK * L,long int id,char name[],char sex, int age); //添加一個(gè)新同學(xué)的信息 int Modify(ST
6、UDENT_LINK * L, long int id,char name[],char sex, int age); // 根據(jù)學(xué)號(hào),修改該同學(xué)的信息 int Delete(STUDENT_LINK * L, long int id); // 根據(jù)學(xué)號(hào),從鏈表中刪除該同學(xué)的信息 int Search(STUDENT_LINK * L,long int id); // 根據(jù)學(xué)號(hào),輸出顯示該同學(xué)信息 void ShowALL(STUDENT_LINK * L); // 從頭到尾,輸出當(dāng)前所有的同學(xué)信息 實(shí)驗(yàn)過(guò)程與實(shí)驗(yàn)結(jié)果(可包括實(shí)驗(yàn)實(shí)施的步驟、算法描述、流程、
7、結(jié)論等)
(1) 順序表實(shí)現(xiàn)堆棧
l 運(yùn)行結(jié)果
(2) 學(xué)生信息鏈表
附錄(可包括源程序清單或其它說(shuō)明)
(1) 順序堆棧
l 源代碼:
#include
8、st; // 用來(lái)存儲(chǔ)元素的順序表 int curNumber; // 用來(lái)存儲(chǔ)當(dāng)前元素的總個(gè)數(shù) }; void iniStack(struct Stack * A); // 初始化堆棧 void clearStack(struct Stack * A); //清空堆棧 void push(struct Stack * A, ELEMENT obj); //將元素obj壓入堆棧的棧頂 void pop(struct Stack * A); //將當(dāng)前棧頂?shù)脑貜棾鰲?。要求:棧不為? ELEMENT get_top(struct Stack * A); //返
9、回當(dāng)前棧頂?shù)脑刂?。要求:棧不為? int is_empty(struct Stack * A); //判斷當(dāng)前堆棧是否為空,空返回1,非空返回0 void display(struct Stack * A); //自頂向下顯示堆棧中的元素 void main() { const int max_input=5; //用戶輸入的次數(shù) int loop; ELEMENT user_input; struct Stack * S=(struct Stack*)malloc(sizeof(struct Stack)); //申請(qǐng)一個(gè)堆棧對(duì)象 /
10、/ 初始化 iniStack(S); for(loop=1;loop<=max_input;loop++) { printf("Input no. %d :",loop); scanf("%d",&user_input); push(S, user_input); } display(S); for(loop=1;loop<=max_input;loop++) { if(! is_empty(S)) { user_input=get_top(S); pop(S); printf("Output no. %
11、d :",loop); printf("%d \n",user_input); } } // 內(nèi)存釋放 clearStack(S); free(S); } ////////////////////////////////////////////////////////////////////// /* 初始化堆棧 */ void iniStack(struct Stack * A) { if(A!=NULL) { A->List=(ELEMENT *)malloc(sizeof(ELEMENT)*MAX_LEN); A->cur
12、Number=0; } } /* 清空堆棧 */ void clearStack(struct Stack * A) { if(A!=NULL) { free(A->List); A->curNumber=0; } } /* 將元素obj壓入以 top 為棧頂?shù)亩褩5臈m? */ void push(struct Stack * A, ELEMENT obj) { if(A->curNumber>MAX_LEN) { printf(" \n 堆棧中的元素總數(shù)超過(guò)最大容量 ! \n"); return; }
13、A->List[A->curNumber]=obj; A->curNumber++; } /* 將當(dāng)前棧頂?shù)脑貜棾鰲!R螅簵2粸榭? */ void pop(struct Stack * A) { if(!is_empty(A)) { A->curNumber--; } } /* 返回當(dāng)前棧頂?shù)脑刂?。要求:棧不為? */ ELEMENT get_top(struct Stack * A) { if(is_empty(A)) { printf("Error: Get top from empty stack. \n");
14、exit(1); //終止程序 } return A->List[A->curNumber-1]; } /* 判斷當(dāng)前堆棧是否為空,空返回1,非空返回0 */ int is_empty(struct Stack * A) { return (A->curNumber==0); } /* 自頂向下顯示堆棧中的元素 */ void display(struct Stack * A) { int i; printf(" Stack 中的元素 自頂向下 為: \n"); for(i=A->curNumber-1;i>=0;i--) {
15、printf("%d \n",A->List[i]); } } (2) 學(xué)生信息鏈表 l 源代碼: void main() { STUDENT_LINK* tjut; tjut=new STUDENT_LINK; iniStudentLink(tjut); Add(tjut,2007002,"Tom",'M',19); Add(tjut,2007007,"Jack",'M',20); Add(tjut,2007004,"Mary",'F',20); ShowALL(tjut); Modify(tjut,2007002,"Tom Smit
16、h",'M',19); Search(tjut,2007002); Delete(tjut,2007004); ShowALL(tjut); clearStudentLink(tjut); delete tjut; } ////////////////////////////////////////////////////////////////////////////////////////// /* 初始化學(xué)生鏈表 */ void iniStudentLink(STUDENT_LINK * L) { L->top=new STUDENT_NODE;
17、 //top結(jié)點(diǎn)是個(gè)內(nèi)容為空的"結(jié)點(diǎn)",注意其作用 L->top->id=0; L->top->next=NULL; } /* 清空學(xué)生鏈表 */ void clearStudentLink(STUDENT_LINK * L) { STUDENT_NODE *ptr; while(L->top != NULL) { ptr=L->top; L->top=L->top->next; delete ptr; } return; } /* 判斷該學(xué)號(hào)的學(xué)生信息是否存在: 存在返回1,不存在返回0 */ int isExist(S
18、TUDENT_LINK * L,long int id) { int exist; STUDENT_NODE *ptr; exist=0; ptr=L->top; while(ptr!=NULL) { if(id==ptr->id) //此學(xué)生信息已存在 { exist=1; break; } ptr=ptr->next; } return exist; } /* 添加一個(gè)新同學(xué)的信息 */ int Add(STUDENT_LINK * L, long int id,char name[],cha
19、r sex, int age)
{
int error;
int exist;
STUDENT_NODE *ptr;
STUDENT_NODE *node;
error=0;
exist=isExist(L,id);
if(exist==1)
{
error=1;
cout<<"Error!!! 錯(cuò)誤添加:id = "< 20、
ptr=ptr->next;
}
node=new STUDENT_NODE;
node->id=id;
strcpy(node->name,name);
node->sex=sex;
node->age=age;
//新結(jié)點(diǎn)插入到ptr結(jié)點(diǎn)之后
node->next=ptr->next;
ptr->next=node;
cout<<"添加:id = "< 21、ng int id,char name[],char sex, int age)
{
int error;
int exist;
STUDENT_NODE *ptr;
error=0;
exist=isExist(L,id);
if(exist==0)
{
error=1;
cout<<"Error!!! 錯(cuò)誤修改:id = "< 22、=ptr->next;
}
// 修改ptr中的信息
strcpy(ptr->name,name);
ptr->sex=sex;
ptr->age=age;
cout<<"修改:id = "< 23、ror=0;
exist=isExist(L,id);
if(exist==0)
{
error=1;
cout<<"Error!!! 錯(cuò)誤刪除:id = "< 24、 delete node;
cout<<"刪除:id = "< 25、在!!"< 26、->age< 27、點(diǎn)的信息
cout<<"------第 "<
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 初中語(yǔ)文作文素材:30篇文學(xué)名著開場(chǎng)白
- 初中語(yǔ)文答題技巧:現(xiàn)代文閱讀-說(shuō)明文閱讀知識(shí)點(diǎn)總結(jié)
- 初中語(yǔ)文作文十大??荚掝}+素材
- 初中語(yǔ)文作文素材:描寫冬天的好詞、好句、好段總結(jié)
- 初中語(yǔ)文必考名著總結(jié)
- 初中語(yǔ)文作文常見主題總結(jié)
- 初中語(yǔ)文考試常考名著總結(jié)
- 初中語(yǔ)文必考50篇古詩(shī)文默寫
- 初中語(yǔ)文易錯(cuò)易混詞總結(jié)
- 初中語(yǔ)文228條文學(xué)常識(shí)
- 初中語(yǔ)文作文素材:30組可以用古詩(shī)詞當(dāng)作文標(biāo)題
- 初中語(yǔ)文古代文化常識(shí)七大類別總結(jié)
- 初中語(yǔ)文作文素材:100個(gè)文藝韻味小短句
- 初中語(yǔ)文閱讀理解33套答題公式
- 初中語(yǔ)文228條文學(xué)常識(shí)總結(jié)