C語言實習報告_第1頁
C語言實習報告_第2頁
C語言實習報告_第3頁
C語言實習報告_第4頁
C語言實習報告_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

.題目一 線性結構的操作1.用線性表的順序存儲(數組)保存數據輸入要待查找的學號N輸入的與學生里面的學號是否相等Y輸出該信息輸出沒有此人算法的N-S圖或流程圖輸入待刪除的學號輸入的與學生里面的學號 N是否相等Y沒有該學生刪除該學生學號編輯版.2.用線性表的鏈式存儲(鏈表)保存數據插入:sH^C1^C1 ^HH

SCi-1 C2 C1 ^?C1s p刪除:LA1?Ai-1-Ai?An^PLA1?AI-1AiAi+1?An^rinclude<stdio.h>#include<stdlib.h>typedefstruct{intnum;//學號編輯版.charname[10];//姓名}student; //定義的抽象元素類型 ElemtypetypedefstructNode /*結點類型定義*/{studentdata;structNode*next;}Node,*LinkList; /*LinkList為結構指針類型*/staticintcount; //學生人數帶頭結點的尾插入法創(chuàng)建鏈表voidinsert(LinkListhead){LinkListp,q; //p代表的待插元素代入最后一個元素q=head;//q指向head結點printf("輸入學生人數:");scanf("%d",&count);編輯版.for(inti=0;i<count;i++){printf("\n輸入第%d個學生信息:\n",i+1);p=(LinkList)malloc(sizeof(Node)); //結點p申請一個空間printf("輸入學號:");scanf("%d",&p->data.num);//輸入結點p的數據°學號printf("\n輸入姓名:");scanf("%s",p->);//輸入結點的數據域姓名 name為數組類型 數組名為首地址 所有此處不需要地ì址符號if(i==0){head->next=p;//i=0 鏈表中沒有元素只有頭節(jié)點把插入到 head之后}else{q->next=p; //鏈表中已有結點元素結點采用尾插入法}q=p; //每插入一個元素就賦值于 q q始終指向最后一個元素編輯版.}p->next=NULL;//設置next域為空}voidprint(LinkListhead){LinkListx; //定義一個鏈表結點x=head->next;//該節(jié)點指向第一個元素printf("學生信息如下\n");while(x)//存在結點{printf("學號%d姓名%s\n",x->data.num,x->);//輸出該結點的數據域學號和姓名x=x->next;//下一個元素}printf("\n");}把鏈表中的文件信息放入文件中寫入語句編輯版.voidsavetofile(LinkListhead){FILE*fp;LinkListp;p=head->next;if((fp=fopen("d:\\st2.txt","wb+"))==NULL){printf("不能打開文件");return;}while(p){fprintf(fp,"%d%s\r\n",p->data.num,p->);p=p->next;}printf("\n寫入成功\n");}功能菜單提示性語句編輯版.voidmenu(){printf("\n0.退出1.輸入 2.輸出3.寫入\n");}voidmain(){intchoice;LinkListl;l=(LinkList)malloc(sizeof(Node));//頭結點申請空間l->next=NULL;//頭結點的next為空menu();while(1){scanf("%d",&choice);//輸入一個整數switch(choice){case1: insert(l);menu();break;編輯版.case2:print(l);menu();break;default:exit(0);}}}題目二 排序#include"stdio.h"#include"stdlib.h"#include"time.h"#defineTRUE1#defineFALSE0typedefintKeyType;typedefintOtherType;#defineMAXSIZE200/*線性表可能達到的最大長度 */typedefstruct編輯版.{KeyTypekey;OtherTypeother_data;}RecordType;voidInsSort(RecordTyper[],intlength)/* 對記錄數組 r做直接插入排序,length為數組中待排序記錄的數目 */{inti,j;for(i=2;i<=length;i++){r[0]=r[i];/*將待插入記錄存放到監(jiān)視哨 r[0]中*/j=i-1;while(r[0].key<r[j].key)/*尋找插入位置 */{r[j+1]=r[j];j=j-1;}r[j+1]=r[0]; /*將待插入記錄插入到已排序的序列中 */}}/*InsSort*/voidBubbleSort(RecordTyper[],intlength)/*對記錄數組 r做冒泡排序,length為數組的長度*/{編輯版.intn,i,j;intchange;RecordTypex;n=length;change=TRUE;for(i=1;i<=n-1&&change;++i){change=FALSE;for(j=1;j<=n-i;++j)if(r[j].key>r[j+1].key){x=r[j];r[j]=r[j+1];r[j+1]=x;change=TRUE;}}}/*BubbleSort*/voidSelectSort(RecordTyper[],intlength)/*對記錄數組 r做簡單選擇排序,length為數組的長度*/{編輯版.inti,j,k;intn;RecordTypex;n=length;for(i=1;i<=n-1;++i){k=i;for(j=i+1;j<=n;++j)if(r[j].key<r[k].key)k=j;if(k!=i){x=r[i];r[i]=r[k];r[k]=x;}}}/*SelectSort*/voidsqrand(RecordTyper[])//獲取隨機數據{inti;intlen;編輯版.srand(time(NULL));//設置隨機數種子。for(i=1;i<=100;i++){r[i].key=rand()%101;}}voidout(RecordTyper[]){for(inti=1;i<=100;i++){printf("%5d",r[i].key);}}voidmenu(){printf("\n1 生成隨機數 2輸出隨機數 3插入排序 4冒泡排序 5簡單選擇排序其他退出\n");}intmain(){intlen,n;編輯版.RecordTyper[MAXSIZE];menu();len=100;while(1){scanf("%d",&n);switch(n){case1:sqrand(r);break;case2:out(r);break;case3:InsSort(r,len);break;case4:BubbleSort(r,len);break;case5:SelectSort(r,len);break;default:exit(0);break;}menu();}return0;}源程序清單宿舍結構體順序存儲結構定義如下:#defineMAXSIZE100編輯版.typedef struct //學生住宿記錄結構體{chardormID[10];intstudentID;char name[10];charsex[2];intage;}dormitory;typedef struct //順序表的存儲結構{dormitorydorm[MAXSIZE]; //線性表占用的數組空間intlast;//最后一個元素在數組中的位置(下標值),空表置為 -1}SeqList;宿舍結構體鏈式存儲結構定義如下:typedef structdormitory//學生住宿記錄結構體{chardormID[10];intstudentID;char name[10];charsex[2];intage;}dormitory;編輯版.typedef structNode//學生住宿記錄結點{studentdata;struct Node *next;}Node,*LinkList; //LinkList為結構體指針類型題目一 線性結構的操作1.用線性表的順序存儲(數組)保存數據1)鍵盤輸入你所在宿舍的同學信息到數組;2)遍歷輸出所以學生數據;3)按姓名查找并輸出指定學生數據,統(tǒng)計查找的次數;4)把數組內容輸出到文件;5)從文件讀入學生數據,按學號排序后顯示在屏幕;6)某同學調入你的宿舍,請增加其信息;并查看增加后的結果;7)某同學調離你的宿舍,請刪除其信息,并查看刪除后的結果;題目一 線性結構的操作2.用線性表的鏈式存儲(鏈表)保存數據1)鍵盤輸入你所在宿舍的同學信息到數組;2)遍歷輸出所以學生數據;3)按姓名查找并輸出指定學生數據,統(tǒng)計查找的次數;4)把數組內容輸出到文件;編輯版.5)從文件讀入學生數據,按學號排序后顯示在屏幕;6)某同學調入你的宿舍,請增加其信息;并查看增加后的結果;7)某同學調離你的宿舍,請刪除其信息,并查看刪除后的結果;題目二排序實習總結報告這次課程設計的心得體會通過實習我的收獲如下 :數據結構是計算機很基礎的一門學科,但是學習就是要從基礎學起 .本次實訓首先鞏固課本上重要知識點,首先是一些基本操作,掌握線性表在單鏈存儲結構中實現基本運算(查找、插入、刪除、合并等)的算法,線性表在單向循環(huán)鏈表結構中實現基本運算 (查找、插入、刪除、合并等)的算法 1、鞏固和加深了對數據結構的理解,提高綜合運用本課程所學知識的能力。2、培養(yǎng)了我選用參考書,查閱手冊及文獻資料的能力。培養(yǎng)獨立思考,深入研究,分析問題、解決問題的能力。 3、通過實際編譯系統(tǒng)的分析設計、編程調試,掌握應用軟件的分析方法和工程設計方法。 4、通過課程設計,培養(yǎng)了我嚴肅認真的工作作風, 逐步建立正確的生產觀念、 經濟觀念和全局觀念。從剛開始得覺得很難,到最后把這個做出來,付出了很多,也得到了很多,以前總以為自己對編程的地方還不行,現在,才發(fā)現只要認真做,沒有什么不可能。編程時要認真仔細,出現錯誤要及時找出并改正, (其中對英語的要求也體現出來了,因為它說明錯誤的時候都是英語) 遇到問題要去查相關的資料。 反復的調試程序,最好是多找?guī)讉€同學來對你的程序進行調試并聽其對你的程序的建議,在他們不知道程序怎么寫的時候完全以一個用戶的身份來用對你的用戶界面編輯版.做一些建議,正所謂當局者迷旁觀者清, 把各個注意的問題要想到;同時要形成自己的編寫程序與調試程序的風格, 從每個細節(jié)出發(fā),不放過每個知識點,注意與理論的聯(lián)系和理論與實踐的差別。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論