數據結構實(shí)驗報告
在經(jīng)濟發(fā)展迅速的今天,報告的使用成為日常生活的常態(tài),要注意報告在寫(xiě)作時(shí)具有一定的格式。那么,報告到底怎么寫(xiě)才合適呢?下面是小編整理的數據結構實(shí)驗報告,希望能夠幫助到大家。

數據結構實(shí)驗報告1
一、設計的背景和目的
隨著(zhù)社會(huì )信息化和網(wǎng)絡(luò )技術(shù)的發(fā)展,數據結構成為了計算機專(zhuān)業(yè)學(xué)生必修的課程之一。而數據結構的課程設計是檢驗學(xué)生理解數據結構的重要手段之一。本次實(shí)驗旨在讓學(xué)生通過(guò)實(shí)踐,掌握線(xiàn)性表、棧、隊列、樹(shù)等數據結構的基本操作和應用。
二、設計的內容
本次實(shí)驗分為四部分,分別為線(xiàn)性表、棧、隊列和樹(shù)。每個(gè)部分分別包括以下內容:
1. 線(xiàn)性表
設計一個(gè)線(xiàn)性表,支持插入、刪除、查找、遍歷、求表長(cháng)度等基本操作,并設計一個(gè)簡(jiǎn)單的應用程序,模擬學(xué)生成績(jì)的管理。
2. 棧
設計一個(gè)棧,支持進(jìn)棧、出棧、判斷棧是否為空、求棧長(cháng)度等基本操作,并設計一個(gè)簡(jiǎn)單的應用程序,模擬計算器實(shí)現加減乘除的運算。
3. 隊列
設計一個(gè)隊列,支持進(jìn)隊、出隊、判斷隊列是否為空、求隊列長(cháng)度等基本操作,并設計一個(gè)簡(jiǎn)單的應用程序,實(shí)現圖的廣度優(yōu)先搜索算法。
4. 樹(shù)
設計一個(gè)二叉樹(shù),支持插入、刪除、查找、遍歷等基本操作,并設計一個(gè)應用程序,實(shí)現哈夫曼編碼。
三、設計的實(shí)現
本次實(shí)驗采用C語(yǔ)言實(shí)現,使用了鏈表和數組兩種數據結構作為存儲方式。
1. 線(xiàn)性表
線(xiàn)性表的'實(shí)現采用鏈表作為存儲結構,由于鏈表可以動(dòng)態(tài)分配內存,因此可以方便地實(shí)現插入和刪除操作。學(xué)生成績(jì)的管理程序中,可以通過(guò)插入、刪除、遍歷等操作實(shí)現對學(xué)生成績(jì)的增刪查改。
2. 棧
棧的實(shí)現采用數組作為存儲結構,數組大小為100,可以通過(guò)定義棧頂指針實(shí)現入棧和出棧操作。計算器程序中,通過(guò)將中綴表達式轉換為后綴表達式,再通過(guò)棧的出棧和進(jìn)棧操作,實(shí)現加減乘除的運算。
3. 隊列
隊列的實(shí)現采用循環(huán)隊列作為存儲結構,隊列大小為100,可以通過(guò)定義隊頭和隊尾指針實(shí)現出隊和入隊操作。實(shí)現圖的廣度優(yōu)先搜索算法中,每次將隊頭出隊,并將與隊頭相鄰的點(diǎn)入隊,直到隊列為空。
4. 樹(shù)
樹(shù)的實(shí)現采用二叉鏈表作為存儲結構,每個(gè)節點(diǎn)的數據結構包括節點(diǎn)值、左右子節點(diǎn)指針和父節點(diǎn)指針。哈夫曼編碼程序中,先通過(guò)輸入一組字符及其出現頻率,構建哈夫曼樹(shù),再通過(guò)遍歷哈夫曼樹(shù),生成哈夫曼編碼。
四、實(shí)驗結果
本次實(shí)驗的四個(gè)部分均已順利完成,所有程序均已經(jīng)通過(guò)測試。通過(guò)實(shí)踐,學(xué)生們對線(xiàn)性表、棧、隊列、樹(shù)等數據結構的基礎操作和應用有了更深入的理解和掌握。此舉有助于提高學(xué)生的程序設計水平和數據結構的應用能力。
數據結構實(shí)驗報告2
1 引言
產(chǎn)品質(zhì)量監督檢驗機構(以下簡(jiǎn)稱(chēng)檢驗機構)的基本任務(wù)是依據技術(shù)標準,對產(chǎn)品進(jìn)行檢測,出據科學(xué)、公正、準確的檢驗報告[1]。檢驗機構的一系列管理措施都是圍繞著(zhù)這一中心而展開(kāi)的。檢驗機構在監督檢驗、委托檢驗、第三方仲裁檢驗、流通領(lǐng)域中打擊假冒偽劣產(chǎn)品檢驗等[2]為提高產(chǎn)品質(zhì)量、保護消費者的合法權益、打擊假冒偽劣產(chǎn)品、促進(jìn)市場(chǎng)有序競爭,為政府部門(mén)提供決策依據先進(jìn)都起到了很大作用。下面就本系統的工作實(shí)際粗略地提出關(guān)于檢驗機構如何提高工作效率的一些看法,以供同行交流參考。
2 提高工作效率的措施
2.1 標準管理
標準是檢驗產(chǎn)品的技術(shù)依據。根據GB/T 27025 [3]的要求,檢驗機構要保證所使用的標準是現行有效的。如果檢驗依據使用錯誤,可能會(huì )導致檢測結果錯誤,或檢驗結論判斷錯誤,從而引發(fā)檢測爭議。要做到檢測中所使用的標準現行有效就必須充分利用網(wǎng)絡(luò ),通過(guò)標準信息網(wǎng)及時(shí)查閱并下載相關(guān)標準更新的信息。檢測機構應設有專(zhuān)職或兼職標準化工作人員,負責使用標準的檢索、更新并建立標準數據庫及數據庫的日常維護。標準數據庫設有如下信息:標準名稱(chēng)、標準編號、日期、實(shí)施日期、部門(mén)、以及作廢、更新、替換信息等內容。檢驗機構內部建立局域網(wǎng),實(shí)現內部聯(lián)網(wǎng),方便各部門(mén)人員及時(shí)查閱標準信息。為了保證數據庫運行準確無(wú)誤,應設置標準更改權限,規定只有標準化負責人員才有權對標準信息進(jìn)行寫(xiě)入。其他人員只能查詢(xún)和讀取,不能隨意更改。檢驗機構還應規定出具報告中引用的標準必須從標準數據庫中調用。
2.2 原始記錄格式規范化
檢驗原始記錄是出具檢驗報告的依據。因此檢驗機構必須重視原始記錄工作,如果將檢測報告被看作是檢驗機構的產(chǎn)品,那么原始記錄就相當于檢測報告所用的原料或半成品。在實(shí)際工作中由于對原始記錄工作重視不夠,記錄中存在不少問(wèn)題。如原始記錄字跡潦草,難以辨認;內容與檢驗報告不符;未記錄引用的檢驗標準、檢驗過(guò)程中所使用的儀器設備及設備使用的參數條件;檢測過(guò)程涉及的過(guò)程數據、公式等記錄不全[4]。為保證檢測報告質(zhì)量,必須重視原始記錄,做到原始記錄規范、準確和完整,可采取以下措施:將產(chǎn)品標準中所涉及的檢測項目按檢驗方法設立原始記錄,原始記錄中必須包括GB/T 27025 [3]中規定的關(guān)于原始記錄要求的全部信息。每項檢測記錄應包含足夠的信息,以便識別不確定度的影響因素,并保證該檢測在盡可能接近原條件的情況下能夠復現。記錄應包括從事各項檢測的人員和結果校核人員的標識、檢測的方法、計算的公式、檢測過(guò)程中必要的曲線(xiàn)圖均應有詳細的記錄及使用的重要檢測儀器與設備(含名稱(chēng)、型號、精度等級)以利于真實(shí)反映檢測手段及檢測條件使用情況,檢測記錄是檢測結果的`原始憑證。
2.3 檢驗過(guò)程計算電算化
對每一類(lèi)產(chǎn)品所有檢驗項目在檢驗過(guò)程中涉及到的計算建立Excel數據庫,將每一檢驗項目計算公式中涉及的參數編制計算程序,檢驗人員只需錄入原始數據,即可得出結果,可以避免檢驗人員用手工或計算器計算的容易出錯的問(wèn)題,還可以提高數據計算的速度,特別是在完成批量大、涉及的計算量較大的監督抽查、工商委托抽樣任務(wù)時(shí)可以發(fā)揮較大的優(yōu)勢。
2.4 檢驗報告
檢驗報告是檢驗工作全過(guò)程形成的結果,是質(zhì)監、工商、法院等單位執法的重要依據。檢驗報告初稿由承檢負責人編寫(xiě).其他承拉人校對并簽名。要提高出具檢驗報告的效率和質(zhì)量,按照相關(guān)規定,要求檢驗報告格式規范;引用的檢驗依據、判定依據正確;報告檢驗數據準確,信息完整無(wú)誤。報告進(jìn)行初審和復審的二級審批制度。報告正本加蓋檢驗報告專(zhuān)用章和騎縫章,保證質(zhì)檢機構的公正性、科學(xué)性和有效性[1]。要提高出具檢驗報告的效率可采取如下措施: 1、將報告格式分類(lèi):由于不同檢驗類(lèi)別的樣品檢驗報告所用的報告格式是不同的,故按不同類(lèi)別設立報告的規范格式:委托送樣、監督抽查、許可證發(fā)證檢驗、委托抽樣檢驗等按不同類(lèi)別建立數據庫,根據檢驗具體要求從中調用;2、按產(chǎn)品分類(lèi):在報告格式分類(lèi)基礎上,將不同產(chǎn)品按產(chǎn)品標準建立完整的全項目檢驗報告格式,將其中的一些內容設為固定參數,如檢驗項目,對應的技術(shù)要求,打報告時(shí)只需調用對應的報告格式和對應產(chǎn)品,輸入實(shí)際檢測值,再對檢測的項目做適當刪改即可,這樣可以節省大量的輸入、校對及查找技術(shù)要求的時(shí)間,還減少誤操作的出錯率。
2.5 文件管理電子化
電子文檔是相對于傳統的紙質(zhì)文檔而言,電子文檔具有很多優(yōu)越性,最突出一點(diǎn)是電子文檔的檢索更為方便、高效,體現在:1、樣品流轉,采用電子文檔記錄樣品編號、數量、檢測項目、送樣單位、接樣日期、要求報告日期等信息,如此記錄的信息便于查找、檢索。2、日常檢驗報告在編制后需要有報告審核的程序。若采用紙質(zhì)報告,經(jīng)領(lǐng)導檢查審核后,如發(fā)現問(wèn)題需修改則要重新打印,既浪費又麻煩,若采用電子文檔,可以將檢驗原始記錄用掃描儀掃描成電子文檔,連同編制好的檢驗報告,以電子文件的形式通過(guò)局域網(wǎng)傳遞給審核者,審核完畢后傳回業(yè)務(wù)室進(jìn)行打印裝訂就可以了。另外,也可以結合本單位的實(shí)際情況,運用實(shí)驗室管理軟件系統,將日常檢測工作流程如:程序文件、樣品流轉、標準檢索、儀器信息、原始記錄(包括儀器分析圖譜)數據匯總、檢測報告等文件信息輸入系統,再經(jīng)分析整理,最終形成文件。這樣既便于日常實(shí)驗室管理,也使檔案管理工作與日常工作形成一個(gè)有機的整體[5]。
總之,要提高產(chǎn)品質(zhì)量監督檢驗機構的工作效率,應從檢驗機構內部多個(gè)環(huán)節齊抓共管,特別是從標準管理、原始記錄格式規范化、檢驗過(guò)程計算電算化、檢驗報告、業(yè)務(wù)室管理和文件管理電子化等方面加強管理,努力提高檢測水平,保證檢測報告質(zhì)量,維護產(chǎn)品質(zhì)量檢驗機構的科學(xué)性、準確性和公正性。
數據結構實(shí)驗報告3
一、實(shí)驗目的及要求
1)掌握棧和隊列這兩種特殊的線(xiàn)性表,熟悉它們的特性,在實(shí)際問(wèn)題背景下靈活運用它們。
本實(shí)驗訓練的要點(diǎn)是“!焙汀瓣犃小钡挠^(guān)點(diǎn);
二、實(shí)驗內容
1) 利用棧,實(shí)現數制轉換。
2) 利用棧,實(shí)現任一個(gè)表達式中的語(yǔ)法檢查(選做)。
3) 編程實(shí)現隊列在兩種存儲結構中的'基本操作(隊列的初始化、判隊列空、入隊列、出隊列);
三、實(shí)驗流程、操作步驟或核心代碼、算法片段
順序棧:
Status InitStack(SqStack &S)
{
S.base=(ElemType*)malloc(STACK_INIT_SIZE*sizeof(ElemType));
if(!S.base)
return ERROR;
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
return OK;
}
Status DestoryStack(SqStack &S)
{
free(S.base);
return OK;
}
Status ClearStack(SqStack &S)
{
S.top=S.base;
return OK;
}
Status StackEmpty(SqStack S)
{
if(S.base==S.top)
return OK;
return ERROR;
}
int StackLength(SqStack S)
{
return S.top-S.base;
}
Status GetTop(SqStack S,ElemType &e)
{
if(S.top-S.base>=S.stacksize)
{
S.base=(ElemType *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(ElemType));
if(!S.base) return ERROR;
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
*S.top++=e;
return OK;
}
Status Push(SqStack &S,ElemType e)
{
if(S.top-S.base>=S.stacksize)
{
S.base=(ElemType *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(ElemType));
if(!S.base)
return ERROR;
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
*S.top++=e;
return OK;
}
Status Pop(SqStack &S,ElemType &e)
{
if(S.top==S.base)
return ERROR;
e=*--S.top;
return OK;
}
Status StackTraverse(SqStack S)
{
ElemType *p;
p=(ElemType *)malloc(sizeof(ElemType));
if(!p) return ERROR;
p=S.top;
while(p!=S.base)//S.top上面一個(gè)...
{
p--;
printf("%d ",*p);
}
return OK;
}
Status Compare(SqStack &S)
{
int flag,TURE=OK,FALSE=ERROR;
ElemType e,x;
InitStack(S);
flag=OK;
printf("請輸入要進(jìn);虺鰲5脑兀");
while((x= getchar)!='#'&&flag)
{
switch (x)
{
case '(':
case '[':
case '{':
if(Push(S,x)==OK)
printf("括號匹配成功! ");
break;
case ')':
if(Pop(S,e)==ERROR || e!='(')
{
printf("沒(méi)有滿(mǎn)足條件 ");
flag=FALSE;
}
break;
case ']':
if ( Pop(S,e)==ERROR || e!='[')
flag=FALSE;
break;
case '}':
if ( Pop(S,e)==ERROR || e!='{')
flag=FALSE;
break;
}
}
if (flag && x=='#' && StackEmpty(S))
return OK;
else
return ERROR;
}
鏈隊列:
Status InitQueue(LinkQueue &Q)
{
Q.front =Q.rear=
(QueuePtr)malloc(sizeof(QNode));
if (!Q.front) return ERROR;
Q.front->next = NULL;
return OK;
}
Status DestoryQueue(LinkQueue &Q)
{
while(Q.front)
{
Q.rear=Q.front->next;
free(Q.front);
Q.front=Q.rear;
}
return OK;
}
Status QueueEmpty(LinkQueue &Q)
{
if(Q.front->next==NULL)
return OK;
return ERROR;
}
Status QueueLength(LinkQueue Q)
{
int i=0;
QueuePtr p,q;
p=Q.front;
while(p->next)
{
i++;
p=Q.front;
q=p->next;
p=q;
}
return i;
}
Status GetHead(LinkQueue Q,ElemType &e)
{
QueuePtr p;
p=Q.front->next;
if(!p)
return ERROR;
e=p->data;
return e;
}
Status ClearQueue(LinkQueue &Q)
{
QueuePtr p;
while(Q.front->next )
{
p=Q.front->next;
free(Q.front);
Q.front=p;
}
Q.front->next=NULL;
Q.rear->next=NULL;
return OK;
}
Status EnQueue(LinkQueue &Q,ElemType e)
{
QueuePtr p;
p=(QueuePtr)malloc(sizeof (QNode));
if(!p)
return ERROR;
p->data=e;
p->next=NULL;
Q.rear->next = p;
Q.rear=p; //p->next 為空
return OK;
}
Status DeQueue(LinkQueue &Q,ElemType &e)
{
QueuePtr p;
if (Q.front == Q.rear)
return ERROR;
p = Q.front->next;
e = p->data;
Q.front->next = p->next;
if (Q.rear == p)
Q.rear = Q.front; //只有一個(gè)元素時(shí)(不存在指向尾指針)
free (p);
return OK;
}
Status QueueTraverse(LinkQueue Q)
{
QueuePtr p,q;
if( QueueEmpty(Q)==OK)
{
printf("這是一個(gè)空隊列! ");
return ERROR;
}
p=Q.front->next;
while(p)
{
q=p;
printf("%d<- ",q->data);
q=p->next;
p=q;
}
return OK;
}
循環(huán)隊列:
Status InitQueue(SqQueue &Q)
{
Q.base=(QElemType*)malloc(MAXQSIZE*sizeof(QElemType));
if(!Q.base)
exit(OWERFLOW);
Q.front=Q.rear=0;
return OK;
}
Status EnQueue(SqQueue &Q,QElemType e)
{
if((Q.rear+1)%MAXQSIZE==Q.front)
return ERROR;
Q.base[Q.rear]=e;
Q.rear=(Q.rear+1)%MAXQSIZE;
return OK;
}
Status DeQueue(SqQueue &Q,QElemType &e)
{
if(Q.front==Q.rear)
return ERROR;
e=Q.base[Q.front];
Q.front=(Q.front+1)%MAXQSIZE;
return OK;
}
int QueueLength(SqQueue Q)
{
return(Q.rear-Q.front+MAXQSIZE)%MAXQSIZE;
}
Status DestoryQueue(SqQueue &Q)
{
free(Q.base);
return OK;
}
Status QueueEmpty(SqQueue Q) //判空
{
if(Q.front ==Q.rear)
return OK;
return ERROR;
}
Status QueueTraverse(SqQueue Q)
{
if(Q.front==Q.rear)
printf("這是一個(gè)空隊列!");
while(Q.front%MAXQSIZE!=Q.rear)
{
printf("%d<- ",Q.base[Q.front]);
Q.front++;
}
return OK;
}
數據結構實(shí)驗報告4
蔬菜農殘檢驗是一個(gè)復雜的過(guò)程,所有檢驗必須經(jīng)過(guò)抽樣、樣品登記、樣品檢驗、報告輸出、數據匯總幾個(gè)階段.首先在樣品登記階段時(shí),檢驗機構抽樣人員必須對進(jìn)入蔬菜批發(fā)市場(chǎng)的蔬菜品種進(jìn)行抽樣,然后立即進(jìn)行登記,登記內容包括業(yè)主的身份及車(chē)輛等信息.樣品登記后應該進(jìn)行樣品檢驗,檢驗數據應輸入管理系統中,經(jīng)校核后作為最終檢驗結果存檔,然后出具檢驗報告.所有檢驗數據必須于第二天上報檢驗機構總部,再由檢驗機構總部上報市政府備案.因為本部距離農殘檢驗站很遠,這段工作通常是第二天由專(zhuān)人開(kāi)車(chē)到農殘檢驗站獲取檢驗記錄單再回質(zhì)檢機構總部錄入匯總,這種工作方式費時(shí)費力,無(wú)法滿(mǎn)足工作要求,需要設計出即時(shí)數據傳輸功能.另外檢驗報告出具后需在檢驗機構總部存檔,因此還需設計出檢驗數據查詢(xún)功能供管理者和使用者對檢驗數據進(jìn)行查詢(xún)統計.
一、PRIM的體系結構
PRIM系統的架構分為數據庫部分和客戶(hù)端部分和數據上傳部分,數據庫部分采用MSSQL數據庫,客戶(hù)端采用.net技術(shù)開(kāi)發(fā).數據庫安裝在服務(wù)器,客戶(hù)端裝在檢驗部門(mén)、總部管理部門(mén),登記人員、檢驗人員、管理員和總部管理人員根據各自權限分別可進(jìn)行登記、檢驗、檢驗數據處理、權限設定、各種查詢(xún)、數據上傳等工作.總部可以實(shí)現遠程監控檢驗機構的檢驗行為和及時(shí)調用、查詢(xún)、分析檢驗結果.通過(guò)開(kāi)放接口,實(shí)現總部實(shí)驗室管理系統和現場(chǎng)實(shí)現對接,從而提高檢驗數據上報時(shí)間,簡(jiǎn)化操作步驟.檢驗數據保存后,通過(guò)PRIM系統提供的接口,使相關(guān)工作人員可以調出檢驗數據進(jìn)行查詢(xún)、分析、匯總,提高了數據的使用效率.另外,使用者可以通過(guò)查詢(xún)統計調用需要的數據.
二、系統模塊設計
3.1基礎模塊
基礎模塊包括數據庫設計、人員設置、基本信息設置等部分,數據庫部分可以采用ACCESS、SQL等數據庫,ACCESS數據庫數據處理和統計分析十分方便,利用ACCESS處理十萬(wàn)條級以下記錄數據時(shí)速度快且操作方便.但是如果處理大的數據(百萬(wàn)條記錄以上)以及復雜查詢(xún)ACCESS有時(shí)不穩定易導致系統崩潰,另外,ACEESS數據庫適用于單用戶(hù)還可以,在處理多用戶(hù)時(shí)就顯得數據處理能力不夠.相比較而言,MSSQL具備相對穩定處理大數據的能力,但是查詢(xún)設計代碼編寫(xiě)復雜,不容易被開(kāi)發(fā)掌握,作為一個(gè)重要的檢驗管理系統,穩定是第一要的,而且每天處理的數據量達到幾千條,很快就會(huì )超過(guò)幾十萬(wàn)條記錄,所以農殘檢驗管理系統采用SQL數據庫是合適的.客戶(hù)端采用.net作為編程語(yǔ)言.
3.2報告輸出模塊
報告輸出的形式有多種,可以采用數據鏈接的方式實(shí)現管理系統與OFFICE文檔的輸出,這種方法的優(yōu)點(diǎn)是開(kāi)發(fā)方便,適應性強,缺點(diǎn)是不穩定,有時(shí)會(huì )出現亂碼現象.第二種方法是采用.net語(yǔ)言把報告寫(xiě)在編碼里,這種方法比較繁瑣,開(kāi)發(fā)周期長(cháng),但是功能強大.系統工作穩定,不會(huì )出現亂碼現象,所以報告輸出方面采用.net編程方式進(jìn)行.
3.3數據匯總查詢(xún)
在進(jìn)行信息查詢(xún)和統計時(shí),經(jīng)常同時(shí)牽涉到幾個(gè)數據表,這就必須考慮數據表之間的數據關(guān)聯(lián)性[1].數據匯總的實(shí)現可以通過(guò)多個(gè)途徑實(shí)現,首先可以編程實(shí)現,即通過(guò)ADO.NET實(shí)現各種查詢(xún)統計的功能,在多層次查詢(xún)時(shí)可以采用普通的組合查詢(xún)方式,也可采用“SHAPE...APPEND”以及“SHAPE...COMPUTE”等高級語(yǔ)句生成關(guān)系層次和參數化以及組合層次進(jìn)行復雜條件的查詢(xún).其次,也可采用在數據庫實(shí)現編寫(xiě)存儲過(guò)程再調用的查詢(xún)方式.數據遠程傳遞是一個(gè)復雜過(guò)程,它涉及到諸多方面的問(wèn)題,包括遠程服務(wù)器和本地服務(wù)器的硬件對接,數據的實(shí)時(shí)性、數據傳遞的'便捷性、數據的大小、及遠程查詢(xún)等諸多軟件對接問(wèn)題,對此,作者專(zhuān)門(mén)開(kāi)發(fā)了LDTD(LONGDISTANCETRANSPORTDATA)技術(shù),用于處理遠程數據傳遞問(wèn)題.遠程數據傳遞應注意的問(wèn)題是數據傳輸以4096個(gè)字節為一個(gè)單位,所以每次數據傳遞盡量?jì)?yōu)化在4096個(gè)字節以下,這樣的傳輸才能快捷.
三、應用實(shí)例
是按照鞍山市產(chǎn)品質(zhì)量監督檢驗所要求開(kāi)發(fā)的PRIM系統的運行界面.抽樣登記人員從登錄窗口登錄主界面后,輸入基本信息后,系統自動(dòng)生成產(chǎn)品檢驗編號,然后通過(guò)任務(wù)界面提交檢驗申請并發(fā)送,這樣,檢驗員接到任務(wù)后開(kāi)始檢驗并出具檢驗報告,然后上傳檢驗結果.在所有的檢驗測試數據都輸入到系統數據庫進(jìn)行保存后,檢驗員還可以查詢(xún)登記情況和檢驗結果.管理人員及其他需要用到檢驗測試數據的人員可以通過(guò)查詢(xún)統計模塊進(jìn)行查詢(xún)、統計,并可以生成相應的分析圖,使得相關(guān)部門(mén)可以直觀(guān)地看到農產(chǎn)品農藥殘留情況.甚至還可以預測一定時(shí)期內農產(chǎn)品農藥殘留的走勢,為其做出相應決策提供可靠的依據.沒(méi)有使用PRIM計算機管理程序之前,檢驗人員做完實(shí)驗后用word文檔出具一份檢驗報單告需5min左右時(shí)間,200份檢驗報告需要1000min左右.加上匯總及改錯等時(shí)間,處理檢驗的時(shí)間需要一個(gè)人用大致1040min去完成.而使用PRIM計算機管理系統后,處理一份報告平均只需1min完成,200份檢驗報告共需200min左右時(shí)間,同時(shí)出錯率低,數據實(shí)時(shí)上傳,無(wú)需匯總,合計共省去約940min寶貴時(shí)間,處理檢驗報告工作量是未使用計算機管理程序時(shí)工作量的1/5.經(jīng)使用單位使用,5個(gè)人的工作量可以4個(gè)人完成,極大地提高了檢驗工作效率,得到了使用單位的認可.
四、結束語(yǔ)
數據結構實(shí)驗報告5
一、實(shí)驗目的
1、掌握數據結構中隊列和棧的基本概念、特性及操作。
2、通過(guò)編程實(shí)踐,加深理解隊列和棧的順序存儲和鏈式存儲的實(shí)現方法。
3、鍛煉編程能力和算法設計能力,提升解決實(shí)際問(wèn)題的能力。
二、實(shí)驗內容
1、實(shí)現順序棧的基本操作(初始化、判空、入棧、出棧)。
2、實(shí)現鏈式隊列的;静僮鳎ǔ跏蓟、判空、入隊、出隊)。
三、實(shí)驗步驟及核心代碼
1、順序棧的實(shí)現
。1)定義順序棧的`數據結構
。2)順序棧的初始化
。3)順序棧的判空操作
。4)順序棧的入棧操作
。5)順序棧的出棧操作(略)
2、鏈式隊列的實(shí)現
。1)定義鏈式隊列的數據結構(節點(diǎn)和隊列)
。2)鏈式隊列的初始化(略)
。3)鏈式隊列的判空操作(略)
。4)鏈式隊列的入隊操作(略)
。5)鏈式隊列的出隊操作(略)
四、實(shí)驗結果與分析
1、順序棧的實(shí)驗結果與分析(包括測試數據、執行結果、問(wèn)題分析等)。
2、鏈式隊列的實(shí)驗結果與分析(包括測試數據、執行結果、問(wèn)題分析等)。
五、實(shí)驗總結
通過(guò)本次實(shí)驗,我深入理解了數據結構中隊列和棧的基本概念、特性及操作,并通過(guò)編程實(shí)踐掌握了隊列和棧的順序存儲和鏈式存儲的實(shí)現方法。在實(shí)驗過(guò)程中,我遇到了一些困難和問(wèn)題,但通過(guò)查閱資料、調試代碼和與同學(xué)討論,最終都得到了解決。這次實(shí)驗不僅鍛煉了我的編程能力和算法設計能力,還提升了我解決實(shí)際問(wèn)題的能力。
數據結構實(shí)驗報告6
《數據結構與算法》實(shí)驗報告
專(zhuān)業(yè) 班級 姓名 學(xué)號
實(shí)驗項目
實(shí)驗一 二叉樹(shù)的應用
實(shí)驗目的
1、進(jìn)一步掌握指針變量的含義及應用。
2、掌握二叉樹(shù)的結構特征,以及各種存儲結構的特點(diǎn)及使用范圍。
3、掌握用指針類(lèi)型描述、訪(fǎng)問(wèn)和處理二叉樹(shù)的運算。
實(shí)驗內容
題目1:編寫(xiě)一個(gè)程序,采用一棵二叉樹(shù)表示一個(gè)家譜關(guān)系。要求程序具有如下功能:
。1)用括號表示法輸出家譜二叉樹(shù),
。2)查找某人的所有兒子,
。3)查找某人的所有祖先。
算法設計分析
。ㄒ唬⿺祿Y構的定義
為了能夠用二叉樹(shù)表示配偶、子女、兄弟三種關(guān)系,特采用以下存儲關(guān)系,則能在二叉樹(shù)上實(shí)現家譜的'各項運算。
二叉樹(shù)型存儲結構定義為:
typedef struct SNODE
{char name[MAX]; //人名
struct SNODE *left;//指向配偶結點(diǎn)
struct SNODE *right; //指向兄弟或子女結點(diǎn)
}FNODE;
。ǘ┛傮w設計
實(shí)驗由主函數、家譜建立函數、家譜輸出函數、兒子查找函數、祖先查找函數、結點(diǎn)定位函數、選擇界面函數七個(gè)函數共同組成。其功能描述如下:
。1)主函數:統籌調用各個(gè)函數以實(shí)現相應功能
void main()
。2)家譜建立函數:與用戶(hù)交互建立家族成員對應關(guān)系
void InitialFamily(FNODE *&head) //家譜建立函數
。3)家譜輸出函數:用括號表示法輸出家譜
輸出形式為:父和母(子1和子妻1(孫1),子2和子妻2(孫2))
void PrintFamily(FNODE *head) //家譜輸出函數
。4)兒子查找函數:在家譜中查找到某人所有的子女并輸出,同時(shí)也能辨別出其是否為家族成員與是否有子女
void FindSon(FNODE *b,char p[]) //兒子查找函數
。5)祖先查找函數:在家譜中查找到某人所有的祖先并輸出,同時(shí)也能辨別出其是否為家族中成員。
int FindAncestor(FNODE *head,char son[ ]) //祖先查找函數
。6)結點(diǎn)定位函數:在家譜中找到用戶(hù)輸入人名所對應的結點(diǎn)。
FNODE *findnode(FNODE *b,char p[]) //結點(diǎn)定位函數
。7)選擇界面函數:為便于編寫(xiě)程序,將用戶(hù)選擇部分獨立為此函數。
void PRINT(int &n)
。ㄈ└骱瘮档脑敿氃O計:
void InitialFamily(FNODE *&head) //家譜建立函數
1:首先建立當前人的信息,將其左右結點(diǎn)置為空,
2:然后讓用戶(hù)確定其是否有配偶,如果沒(méi)有配偶,則當前程序結束,
3:如果有則建立其配偶信息,并將配偶結點(diǎn)賦給當前人的左結點(diǎn);
4:再讓用戶(hù)確定其是否有子女,如果有則遞歸調用家譜建立函數建立子女結點(diǎn),并將其賦給配偶結點(diǎn)的下一個(gè)右結點(diǎn)。
5:如無(wú),則程序結束
void PrintFamily(FNODE *head) //家譜輸出函數
1:首先判斷當前結點(diǎn)是否為空,如果為空則結束程序;
2:如果不為空,則輸出當前結點(diǎn)信息,
3:然后判斷其左結點(diǎn)(配偶結點(diǎn))是否為空,如不為空則輸出“和配偶信息。
4:再判斷配偶結點(diǎn)的右結點(diǎn)是否為空,如不為空則遞歸調用輸出其子女信息,最后輸出“)”;
5:當配偶結點(diǎn)為空時(shí),則判斷其右結點(diǎn)(兄弟結點(diǎn))是否為空
6:如果不為空,則輸出“,”,并遞歸調用輸出兄弟信息
7程序結束
FNODE *findnode(FNODE *b,char p[]) //結點(diǎn)定位函數
1:當前結點(diǎn)是否為空,為空則返回空;
2:如果和查找信息相同,則返回當前結點(diǎn);
3:如不然,則先后遞歸訪(fǎng)問(wèn)其左結點(diǎn),再不是則遞歸訪(fǎng)問(wèn)右結點(diǎn)
void FindSon(FNODE *b,char p[]) //兒子查找函數
1:在家譜中定位到要查找的結點(diǎn),如無(wú)則輸出“查找不到此人”
2:判斷其配偶結點(diǎn)與子女結點(diǎn)是否為空,為空則輸出“無(wú)子女”
3:不為空則輸出其配偶結點(diǎn)的所有右結點(diǎn)(子女結點(diǎn))。
int FindAncestor(FNODE *head,char son[ ]) //祖先查找函數
1:先在家譜中定位到要查找的結點(diǎn),如為空輸出“不存在此人”,程序結束
2:先將父母結點(diǎn)入棧,當棧為空時(shí)程序結束,
3:棧不為空時(shí),判斷棧頂元素是否已訪(fǎng)問(wèn)過(guò),
4:訪(fǎng)問(wèn)過(guò),再判斷是否為查找結點(diǎn),如是則輸出棧中保存的其祖先結點(diǎn),并濾過(guò)其兄弟結點(diǎn)不輸出;不是查找結點(diǎn),則退棧一個(gè)元素
5:未訪(fǎng)問(wèn)過(guò),則取當前棧頂元素,置訪(fǎng)問(wèn)標志——1,同時(shí)取其右結點(diǎn)
6:棧不為空或當前所取結點(diǎn)不為空時(shí),轉到2;
實(shí)驗測試結果及結果分析
。ㄒ唬y試結果
。ǘ┙Y果分析
。裕
實(shí)驗總結
。裕
【數據結構實(shí)驗報告】相關(guān)文章:
08-10
06-21
07-10
03-15
06-24
10-09
11-16
11-04
10-14