資料結構實習報告

2021-09-27 11:38:50 字數 3443 閱讀 3222

報告題目: 文學研究助手

班級: 業計算10專本

姓名: ***xx

完成日期: 2011-5-15

一、問題描述:

文學研究人員需要統計某篇英文**中某些形容詞的出現次數和位置。試寫乙個實現這一目標的文字統計系統,稱為「文學研究助手」。

英文**存於乙個文字檔案中。待統計的詞彙集合要一次輸入完畢,即統計工作必須在程式的一次執行之後就全部完成。程式的輸出結果是每個詞的出現次數和出現位置所在行的行號,格式自行設計。

二、需求分析:

1、 文字串非空且以檔案形式存放,統計匹配的詞集非空。檔名和詞集均使用者從鍵盤輸入;

2、 「單詞」定義:由字母構成的字串行,中間不含空格字元且區分大小寫;

3、 待統計的「單詞」在文字串中不跨行出現,它或者從行首開始,或者前置若干空格字元;

4、 在計算機終端輸出的結果是:單詞,出現的次數,出現的位置所在行的行號,同一行出現兩次的只輸出乙個行號;

5、 測試資料:將實驗的源程式作為測試檔案,從中任意選取「單詞」作為測試的詞集。

三、概要設計:

採用擷取字串、比較字串的模式來完成「單詞匹配比較」,從而統計出其出現的位置和次數。

1、資料結構定義:

程式將涉及到如下兩個線性表結構的資料型別,用類c語言描述如下:

(1) 定義從文字讀取的「單詞串」型別:

adt filestring;

資料關係:r1={} | si-1,si ∈ d,i = 1,2,3,…..,n}

基本操作:

createfilestring (fslist & fsl);

初始條件:已知乙個空的「文字單詞串表頭」;

操作結果:生成乙個空的「文字單詞串串行」;

insertfilestring (fslist & fsl,string str,int row);

初始條件:fsl為文字字串序列的表頭str為乙個標準的c++字串,row代表了字串出現的行數;

操作結果:將str插入到文字字串序列中,不需要排序;若fsl為空表頭,則建立乙個字串序列;否則插在字串序列尾部;

getfslength (fslist fsl);

初始條件:fsl為文字字串序列的表頭;

操作結果:獲取以fsl為表頭的文字字串的長度

printfilestring (fslist fsl);

初始條件:fsl為文字字串序列的表頭;

操作結果:列印以fsl為表頭的文字字串中的所有字串;

readfile (fslist & fsl);

初始條件:fsl為文字字串序列的表頭;

操作結果:從檔案中讀取字串序列,並將其保留在以fsl為表頭的字串序列中;

clearfilestring (fslist & fsl);

初始條件:fsl為文字字串序列的表頭;

操作結果:以fsl為表頭的文字字串序列被清空;

}adt filestring

(2) 定義從鍵盤讀取的「單詞串」型別:

adt keystring;

資料關係:r1={} | si-1,si ∈ d,i = 1,2,3,…..,n}

基本操作:

createkeystring (kslist & ksl);

初始條件:已知乙個空的「鍵盤單詞串表頭」;

操作結果:生成乙個空的「鍵盤單詞串串行」;

insertkeystring (kslist & ksl,string str,int row);

初始條件:ksl為鍵盤字串序列的表頭str為乙個標準的c++字串,row代表了字串出現的行數;

操作結果:將str插入到鍵盤字串序列中,不需要排序;若ksl為空表頭,則建立乙個字串序列;否則插在字串序列尾部;

getkslength (kslist ksl);

初始條件:ksl為鍵盤字串序列的表頭;

操作結果:獲取以ksl為表頭的鍵盤字串的長度

printkeystring (kslist ksl);

初始條件:ksl為鍵盤字串序列的表頭;

操作結果:列印以ksl為表頭的鍵盤字串中的所有字串;

readkey (kslist & ksl);

初始條件:ksl為文字字串序列的表頭;

操作結果:從鍵盤中讀取字串序列,並將其保留在以ksl為表頭的字串序列中;

clearkeystring (kslist & ksl);

初始條件:ksl為文字字串序列的表頭;

操作結果:以ksl為表頭的文字字串序列被清空;

}adt keystring

2、模組設計:

1) 主程式模組:主函式設計如下

int main ( ) filestring,*fslist;

/*** 從鍵盤讀取的字串集合

*/typedef struct keystringkeystring,*kslist;

/*** 匹配文字字串和鍵盤字串的模式匹配排除符集合

*/typedef char * model;

3、主要演算法設計:

/*** 在檔案字串集合中插入新的字串

*/int insertfilestring(fslist & fsl,string str,int row)

s->name = str;

s->row = row;

s->next = null;

tp->next = s順序插入

return 1;

}/**

* 從檔案中讀取串

*/int readfile(fslist & fsl)

ifstream fs = ifstream(url開啟檔案讀取字串

if(!fs)

int rowline = 1;

string s;

while(fs.peek()!=eof遇到檔案尾符,結束讀取

getline(fs,s,'\n依行讀取s

insertfilestring(fsl,s,rowline將獲取的字串插入檔案字串集合

return 1;

}/**

* 統計模式匹配排除字元

*/int getmodelexception(model & model)

if(cin.peek()=='\n')

cin.get(model[i++]);

}//預設的模式匹配排除符

model[imodel[i+1model[i+2model[i+3model[i+4] = '\"';

model[i+5model[i+6model[i+7model[i+8model[i+9] = '$';

model[i+10model[i+11model[i+12model[i+13model[i+14] = ')';

model[i+15model[i+16model[i+17model[i+18model[i+19] = '\\';

資料結構實習報告

接著猜的人再根據出題者的幾a幾b繼續猜,直到猜中為止。次數限制 有的時候,這個遊戲有猜測次數上的限制。根據計算機測算,這個遊戲,如果以最嚴謹的計算,任何數字可以在7次之內猜出。而有些地方把次數限制為6次或更少,則會導致有些數可能猜不出來。而有些地方考慮到人的邏輯思維難以達到計算機的那麼嚴謹,故設定為...

資料結構實習報告

實習報告 題目 編制解決約瑟夫環問題的程式 班級 09052713 姓名 張靜 學號 09052304 完成日期 2010.11.20 一 需求分析 1.利用單向迴圈鍊錶儲存結構模擬此過程,按照出列的順序印出各人的編號。2.演示程式以使用者和計算機的對話方式執行,即在計算機上顯示 提示資訊 之後,由...

資料結構實習報告

實習報告 題目 運動會分數統計 班級 計算機學院031021班姓名 雷凱躍學號 03102013 一 需求分析 1.在該程式中,參賽學校編號為1 n n 20 比賽分成m m 30 個男子專案和w w 20 個女子專案,分別編號為1 m和m 1 m w,姓名長度不超過20個字元 2.輸入各個專案資訊...