注意:評(píng)測(cè)不通過請(qǐng)重置代碼倉庫,重新評(píng)測(cè)
第1關(guān):增加植物信息
任務(wù)描述
本關(guān)任務(wù):已知plant.txt的路徑為"data_edit/plant.txt",從plant.txt中讀取植物的基本信息,創(chuàng)建一個(gè)植物信息的鏈表,基于該鏈表,實(shí)現(xiàn)植物基本信息的增加功能。
編程要求
根據(jù)提示,在右側(cè)編輯器補(bǔ)充代碼,輸入植物的名稱、學(xué)名、分布地和詳情描述信息,將該植物的基本信息添加到plant.txt中的最后。(注:由于植物名稱是唯一的,因此在增加時(shí)需要判斷該植物名稱是否存在于plant.txt中,若存在,則輸出“增加失敗”;輸入分布地時(shí),先輸入分布地個(gè)數(shù),再依次輸入分布地)
測(cè)試說明
平臺(tái)會(huì)對(duì)你編寫的代碼進(jìn)行測(cè)試:
測(cè)試輸入: 蒲公英
Taraxacum mongolicum
2
黑龍江
吉林
多年生草本。根略呈圓錐狀,彎曲,長(zhǎng)4~10厘米,表面棕褐色,皺縮,根頭部有棕色或黃白色的毛茸。葉成倒卵狀披針形、倒披針形或長(zhǎng)圓狀披針形,長(zhǎng)4~20厘米,寬1-5厘米,先端鈍或急尖,邊緣有時(shí)具波狀齒或羽狀深裂,有時(shí)倒向羽狀深裂或大頭羽狀深裂,頂端裂片較大,三角形或三角狀戟形,全緣或具齒,每側(cè)裂片3~5片,裂片三角形或三角狀披針形,通常具齒,平展或倒向,裂片間常夾生小齒,基部漸狹成葉柄,葉柄及主脈常帶紅紫色,疏被蛛絲狀白色柔毛或幾無毛。
;
測(cè)試輸出: 蒲公英#Taraxacum mongolicum#黑龍江@吉林#多年生草本。根略呈圓錐狀,彎曲,長(zhǎng)4~10厘米,表面棕褐色,皺縮,根頭部有棕色或黃白色的毛茸。葉成倒卵狀披針形、倒披針形或長(zhǎng)圓狀披針形,長(zhǎng)4~20厘米,寬1-5厘米,先端鈍或急尖,邊緣有時(shí)具波狀齒或羽狀深裂,有時(shí)倒向羽狀深裂或大頭羽狀深裂,頂端裂片較大,三角形或三角狀戟形,全緣或具齒,每側(cè)裂片3~5片,裂片三角形或三角狀披針形,通常具齒,平展或倒向,裂片間常夾生小齒,基部漸狹成葉柄,葉柄及主脈常帶紅紫色,疏被蛛絲狀白色柔毛或幾無毛。
測(cè)試輸入: 鈍裂銀蓮花
Anemone obtusiloba
2
西藏
四川
植株高10-30厘米?;~7-15,有長(zhǎng)柄,多少密被短柔毛;葉片腎狀五角形或?qū)捖研危L(zhǎng)1.2-3厘米,寬1.7-5.5厘米,基部心形,三全裂或偶而三裂近基部,中全裂片菱狀倒卵形,二回淺裂,側(cè)全裂片與中全裂片近等大或稍小,各回裂片互相多少鄰接或稍覆壓,脈近平;葉柄3-18厘米?;ㄝ?-5,有開展的柔毛;苞片3,無柄,稍不等大,寬菱形或楔形,常三深裂,長(zhǎng)1-2厘米,多少密被柔毛;花梗1-2,長(zhǎng)1.5-8厘米;萼片5(-8),白色,藍(lán)色或黃色,倒卵形或狹倒卵形,長(zhǎng)0.8-1.2厘米,寬5-8毫米,外面有疏毛,雄蕊長(zhǎng)約4毫米,花藥橢圓形;心皮約8,子房密被柔毛。5月至7月開花。
;
測(cè)試輸出: 增加失敗
開始你的任務(wù)吧,祝你成功!
#include<bits/stdc++.h>
using namespace std;
struct Plant
{
//植物信息定義
string name; //植物名稱
string sname; //學(xué)名
string place[100]; //分布地
string detail; //詳情描述
};
typedef struct LNode
{
Plant data; //結(jié)點(diǎn)的數(shù)據(jù)域
struct LNode *next; //指針域
}LNode,*LinkList;
vector<string> split(const string& str, const string& delim) {//對(duì)字符串進(jìn)行分割,用delim進(jìn)行分割
vector<string> res;
if("" == str) return res;
//先將要切割的字符串從string類型轉(zhuǎn)換為char*類型
char * strs = new char[str.length() + 1] ; //不要忘了
strcpy(strs, str.c_str());
char * d = new char[delim.length() + 1];
strcpy(d, delim.c_str());
char *p = strtok(strs, d);//按照一定的分隔符將一個(gè)長(zhǎng)的字符串分割成一個(gè)個(gè)短的字符串
while(p) {
string s = p; //分割得到的字符串轉(zhuǎn)換為string類型
res.push_back(s); //存入結(jié)果數(shù)組
p = strtok(NULL, d);
}
return res;
}
LNode* createNode(string& line) {
LNode* node = new LNode();//創(chuàng)建node,把四個(gè)成員變量填充進(jìn)去
node->next = NULL;
vector<string> infos = split(line, "#");
node->data.name = infos[0];
node->data.sname = infos[1];
string places = infos[2];
vector<string> vp = split(places, "@");
for(int i = 0; i < vp.size(); i++) {
node->data.place[i] = vp[i];
}
node->data.detail = infos[3];
return node;
}
void ReadFile(LinkList &L, string filename)
{//從文件中讀取數(shù)據(jù),存入鏈表L中
ifstream infile;
infile.open(filename.c_str()); //打開文件
assert(infile.is_open()); // 條件返回錯(cuò)誤,終止程序
string line, last_line;
while (getline(infile, line))
{
LNode* newNode = createNode(line);//形成一個(gè)鏈表
newNode->next = L->next;//頭插法創(chuàng)建鏈表
L->next = newNode;
}
infile.close();
}
int InPlant(LinkList L,string name)
{//判斷該植物名稱name是否存在于鏈表中
LinkList p=L->next;
while(p) {
if(name == p->data.name) //遍歷鏈表
return 1;
p=p->next;
}
return 0;
}
bool InsertPlant(LinkList &L, string filename)
{//增加植物信息,輸入植物的名稱、學(xué)名、分布地和詳情描述信息,將該植物的基本信息添加到plant.txt中的最后
//如果該植物名稱存在于plant.txt中,返回false,否則,返回true
Plant t;
getline(cin,t.name);
getline(cin,t.sname);
int pnum;
cin>>pnum;
for(int i=0;i<pnum;i++){
cin>>t.place[i];
}
cin>>t.detail;
if(InPlant(L,t.name)){
return false;
}
else{
ofstream ofile;
ofile.open(filename.c_str());
ofile<<t.name<<'#'<<t.sname<<'#';
for(int i=0;i<pnum;i++){
if(i==pnum-1)
ofile<<t.place[i]<<'#';
else
ofile<<t.place[i]<<'@';
}
ofile<<t.detail;
ofile.close();
}
}
第2關(guān):刪除植物信息
任務(wù)描述
本關(guān)任務(wù):已知plant.txt的路徑為"data_edit/plant.txt",從plant.txt中讀取植物的基本信息,創(chuàng)建一個(gè)植物信息的鏈表,基于該鏈表,實(shí)現(xiàn)植物基本信息的刪除功能。
編程要求
根據(jù)提示,在右側(cè)編輯器補(bǔ)充代碼,刪除植物信息,輸入要?jiǎng)h除的植物名稱,將該植物的全部信息從plant.txt中刪除。(注:需要判斷該植物名稱是否存在于plant.txt中,若存在,則執(zhí)行刪除操作,否則,輸出“刪除失敗”。)
測(cè)試說明
平臺(tái)會(huì)對(duì)你編寫的代碼進(jìn)行測(cè)試:
測(cè)試輸入: 秋分草
; 預(yù)期輸出: 秋分草#Rhynchospermum verticillatum#湖南@臺(tái)灣@西藏@廣東@福建@貴州@云南@湖北@江西@四川#多年生草本,高25-100厘米。莖堅(jiān)硬,單生,或少數(shù)簇生,直立,基部直徑可達(dá)8毫米,通常中部以上有叉狀分枝,或有時(shí)有總狀式花序分枝,被塵狀微柔毛。葉兩面被稍稀疏的貼伏短柔毛,基部葉花期脫落稀生存。下部的莖葉倒披針形、長(zhǎng)橢圓狀倒披針形,或長(zhǎng)橢圓形,稀匙形,長(zhǎng)4.5-14厘米,寬2.5-9厘米,頂端急尖,有小尖頭,基部楔形漸狹,有長(zhǎng)的具冀葉柄,邊緣自中部以上有波狀的鋸齒,中部莖葉稠密,節(jié)間長(zhǎng)1.5-2厘米,披針形,有短葉柄,全緣或有波狀圓鋸齒或尖齒;上部葉漸小,全緣或有尖齒。頭狀花序單生叉狀分枝頂端或單生葉腋或近總狀排列,直徑4-5毫米,果期增大,有短花序梗,花序梗密被銹色塵狀短柔毛。總苞寬鐘狀或果期半球狀,寬3-4毫米,總苞片稍不等長(zhǎng),頂端鈍,邊緣膜質(zhì),撕裂,外層卵狀長(zhǎng)橢圓形,中層長(zhǎng)橢圓形,內(nèi)層狹長(zhǎng)橢圓形。雌花2-3層,花冠長(zhǎng)1.2毫米,管部極短,外面被腺點(diǎn);兩性花花冠長(zhǎng)2毫米,外面被腺點(diǎn)。雌花瘦果壓扁,長(zhǎng)橢圓形,長(zhǎng)4毫米,寬1毫米,嚎較長(zhǎng),有脈狀加厚的邊緣,被棕黃色小腺點(diǎn);兩性花瘦果詠短或無嚎。冠毛纖細(xì),易脫落?;ü?-11月。
測(cè)試輸入: 玫瑰
; 預(yù)期輸出: 刪除失敗
開始你的任務(wù)吧,祝你成功!
#include<bits/stdc++.h>
using namespace std;
struct Plant
{
//植物信息定義
string name; //植物名稱
string sname; //學(xué)名
string place[100]; //分布地
string detail; //詳情描述
};
typedef struct LNode
{
Plant data; //結(jié)點(diǎn)的數(shù)據(jù)域
struct LNode *next; //指針域
}LNode,*LinkList;
void ReadFile(LinkList& L, string filename)
{//從文件中讀取數(shù)據(jù),存入鏈表L中
ifstream infile;
infile.open(filename.c_str());
string line;
LinkList r = L;
while (getline(infile, line)) {
LinkList p = new LNode;
Plant temp;
stringstream data(line);
string s;
int flag = 0;
while (getline(data, s, '#')) {
if (flag == 0) temp.name = s;
if (flag == 1) temp.sname = s;
if (flag == 2) {
stringstream ssplace(s);
string place;
int placenum = 0;
while (getline(ssplace, place, '@')) {
temp.place[placenum] = place;
placenum++;
}
}
if (flag == 3) temp.detail = s;
flag++;
}
p->data = temp;
p->next = r->next;
r->next = p;
r = p;
}
infile.close();
return;
}
void DeletePlant(LinkList &L,string name,string filename)
{//刪除指定植物信息
LNode* p = new LNode;
p = L;
while (p->next) {
if (p->next->data.name == name) {
LNode* q = new LNode;
q = p->next;
p->next = q->next;
delete(q);
}
else {
p = p->next;
}
}
p = L->next;
fstream file;
file.open(filename, ios::out);
while (p) {
int n = 0;
while (p->data.place[n]!="") {
n++;
}
file << p->data.name << "#" << p->data.sname << "#";
for (int i = 0; i < n - 1; i++) {
file << p->data.place[i] << "@";
}
file << p->data.place[n - 1] << "#" << p->data.detail << endl;
p = p->next;
}
file.close();
}
第3關(guān):修改植物信息
任務(wù)描述
本關(guān)任務(wù):已知plant.txt的路徑為"data_edit/plant.txt",從plant.txt中讀取植物的基本信息,創(chuàng)建一個(gè)植物信息的鏈表,基于該鏈表,實(shí)現(xiàn)植物基本信息的修改功能。
編程要求
根據(jù)提示,在右側(cè)編輯器補(bǔ)充代碼,輸入植物名稱和修改后的詳情描述信息,將修改后的信息存儲(chǔ)到plant.txt中。(注:需要判斷該植物名稱是否存在于plant.txt中,若存在,則執(zhí)行修改操作,否則,輸出“修改失敗”。)
測(cè)試說明
平臺(tái)會(huì)對(duì)你編寫的代碼進(jìn)行測(cè)試:
測(cè)試輸入: 羅蒙常山
落葉亞灌木,高達(dá)1-2米,下部通常平臥,上部直立;莖、葉柄、葉、花序都有絹狀長(zhǎng)毛及伏貼、彎曲短柔毛。葉對(duì)生,橢圓形,長(zhǎng)5-10厘米,寬2.5-5厘米,邊緣有鋸齒;葉柄長(zhǎng)1-2厘米。傘房狀聚傘花序頂生,直徑通常2-3厘米,具多數(shù)而密集的花,無總花梗;花兩性,一型,藍(lán)色,花芽時(shí)倒卵形,盛開時(shí)直徑約8毫米,無放射花
; 預(yù)期輸出: 羅蒙常山#Dichroa yaoshanensis#湖南@廣西@廣東@云南#落葉亞灌木,高達(dá)1-2米,下部通常平臥,上部直立;莖、葉柄、葉、花序都有絹狀長(zhǎng)毛及伏貼、彎曲短柔毛。葉對(duì)生,橢圓形,長(zhǎng)5-10厘米,寬2.5-5厘米,邊緣有鋸齒;葉柄長(zhǎng)1-2厘米。傘房狀聚傘花序頂生,直徑通常2-3厘米,具多數(shù)而密集的花,無總花梗;花兩性,一型,藍(lán)色,花芽時(shí)倒卵形,盛開時(shí)直徑約8毫米,無放射花
測(cè)試輸入: 茉莉
常綠小灌木或藤本狀灌木,性喜溫暖,不耐霜凍。高可達(dá)1米。小枝有棱角,有時(shí)有毛。單葉對(duì)生,寬卵形或橢圓形,葉脈明顯,葉面微皺,葉柄短而向上彎曲,有短柔毛。初夏由葉腋抽出新梢。
預(yù)期輸出: 修改失敗
開始你的任務(wù)吧,祝你成功!
#include<bits/stdc++.h>
using namespace std;
struct Plant
{
//植物信息定義
string name; //植物名稱
string sname; //學(xué)名
string place[100]; //分布地
string detail; //詳情描述
};
typedef struct LNode
{
Plant data; //結(jié)點(diǎn)的數(shù)據(jù)域
struct LNode *next; //指針域
}LNode,*LinkList;
void ReadFile(LinkList& L, string filename)
{//從文件中讀取數(shù)據(jù),存入鏈表L中
ifstream infile;
infile.open(filename.c_str());
string line;
LinkList r = L;
while (getline(infile, line)) {
LinkList p = new LNode;
Plant temp;
stringstream data(line);
string s;
int flag = 0;
while (getline(data, s, '#')) {
if (flag == 0) temp.name = s;
if (flag == 1) temp.sname = s;
if (flag == 2) {
stringstream ssplace(s);
string place;
int placenum = 0;
while (getline(ssplace, place, '@')) {
temp.place[placenum] = place;
placenum++;
}
}
if (flag == 3) temp.detail = s;
flag++;
}
p->data = temp;
p->next = r->next;
r->next = p;
r = p;
}
infile.close();
return;
}
bool ChangePlant(LinkList &L,string name,string details,string filename)
{//修改植物信息
//若該植物名稱存在于plant.txt中,返回true,否則,返回false
LNode* p = new LNode;
p = L->next;
int flag = 0;
while (p) {
if (p->data.name == name) {
p->data.detail = details;
flag++;
}
p = p->next;
}
if (flag > 0) {
p = L->next;
fstream file;
file.open(filename, ios::out);
while (p) {
int n = 0;
while (p->data.place[n] != "") {
n++;
}
file << p->data.name << "#" << p->data.sname << "#";
for (int i = 0; i < n - 1; i++) {
file << p->data.place[i] << "@";
}
file << p->data.place[n - 1] << "#" << p->data.detail << endl;
p = p->next;
}
return true;
}
else {
return false;
}
}
第4關(guān):基于順序表的順序查找
任務(wù)描述
從plant.txt中讀取植物的基本信息,實(shí)現(xiàn)基于順序表的順序查找。
編程要求
根據(jù)提示,在右側(cè)編輯器補(bǔ)充代碼,輸入植物學(xué)名,若查找成功,輸出該植物對(duì)應(yīng)的基本信息(名稱、分布地、詳情描述),同時(shí),輸出查找成功時(shí)的平均查找長(zhǎng)度ASL;否則,輸出“查找失敗!”。
測(cè)試說明
平臺(tái)會(huì)對(duì)你編寫的代碼進(jìn)行測(cè)試:
測(cè)試輸入: Gentiana omeiensis
預(yù)期輸出: 查找成功!
名稱:峨眉龍膽
分布地:四川
詳情描述:多年生草本,高30-40厘米,基部被黑褐色枯老膜質(zhì)葉鞘包圍。根莖短縮或伸長(zhǎng),平臥或斜伸,具多數(shù)略肉質(zhì)的須根。枝2-4個(gè)叢生,其中有1-3個(gè)營養(yǎng)枝和1個(gè)花枝;花枝直立,黃綠色或有時(shí)紫紅色,中空,近圓形,光滑。葉大部分基生,狹橢圓形或橢圓狀披針形,長(zhǎng)5.5-12厘米,寬1-1.5厘米,先端鈍,基部漸狹,葉脈3條,在兩面均明顯,并在下面稍突起,葉柄膜質(zhì),長(zhǎng)4-8厘米;莖生葉少,2-4對(duì),匙形,稀狹橢圓形,長(zhǎng)4-6厘米,寬1.5-2厘米,先端鈍,基部漸狹,葉脈1-3條,在兩面均明顯,并在下面突起,葉柄長(zhǎng)1-4.5厘米,愈向莖上部葉愈小,柄愈短。花多數(shù),頂生和生上部葉腋中呈輪傘狀,稀花序下部分枝,有長(zhǎng)總花梗,無小花梗;花萼狹鐘形,長(zhǎng)11-13毫米,外面常帶紫色,萼筒草質(zhì),一側(cè)開裂,呈佛焰苞狀,邊緣膜質(zhì),萼齒極小,鉆形,長(zhǎng)1-1.5毫米,彎缺狹,截形;花冠藍(lán)色,無深色條紋和斑點(diǎn),筒狀鐘形,長(zhǎng)3.5-4厘米,裂片卵形,長(zhǎng)4.5-5.5毫米,先端圓形或鈍,上半部全緣,下半部有不整齊細(xì)齒,褶偏斜,截形或三角形,長(zhǎng)1-1.5毫米,先端急尖,邊緣有不整齊細(xì)齒;雄蕊著生于冠筒下部,整齊,花絲線狀鉆形,長(zhǎng)13-16毫米,花藥狹矩圓形,長(zhǎng)3-3.5毫米;子房線狀披針形,長(zhǎng)10-13毫米,兩端漸狹,柄長(zhǎng)10-13毫米,花柱短而粗,長(zhǎng)2-2.5毫米,柱頭小,2裂,裂片半圓形。蒴果內(nèi)藏,狹橢圓形,長(zhǎng)1.3-1.5厘米,兩端鈍,柄長(zhǎng)至1-2厘米;種子黃褐色,有光澤,矩圓形,長(zhǎng)1-1.2毫米,表面具海綿狀網(wǎng)隙?;ü?-9月。
平均查找長(zhǎng)度ASL為:3245.50
測(cè)試輸入: Pelargonium hortorum
預(yù)期輸出: 查找失敗!
文章來源:http://www.zghlxwxcb.cn/news/detail-847717.html
#include<bits/stdc++.h>
using namespace std;
struct Plant{ //植物信息定義
string name; //名稱
string sname; //學(xué)名
string place[100]; //分布地
string detail; //詳情描述
};
typedef struct{ //順序表
Plant *plant;
int length;
}SqList;
void InitList(SqList& L) {
//順序表初始化
L.plant = new Plant[9999];
if (!L.plant) exit(0);
L.length = 0;
return;
}
void ListInsert(SqList& L, int i, Plant p) {
L.plant[i] = p;
}
void ReadFile(SqList& L, string filename) {
//讀取plant.txt文件,調(diào)用ListInsert函數(shù)將每條植物數(shù)據(jù)插入順序表
ifstream infile;
infile.open(filename.c_str());
string line;
int i = 0;
while (getline(infile, line)) {
Plant temp;
stringstream data(line);
string s;
int flag = 0;
while (getline(data, s, '#')) {
if (flag == 0) temp.name = s;
if (flag == 1) temp.sname = s;
if (flag == 2) {
stringstream ssplace(s);
string place;
int placenum = 0;
while (getline(ssplace, place, '@')) {
temp.place[placenum] = place;
placenum++;
}
}
if (flag == 3) temp.detail = s;
flag++;
}
ListInsert(L, i, temp);
L.length++;
i++;
}
infile.close();
return;
}
int Search_Seq(SqList L, string key) {
//在順序表L中順序查找植物學(xué)名等于key的數(shù)據(jù)元素
//若找到,則返回該元素在表中的下標(biāo),否則返回-1
int i = 0;
for (i = 0; i < L.length; i++) {
if (L.plant[i].sname == key) {
return i;
}
}
return -1;
}
double ASL_Seq(SqList L) {
//返回基于順序表的順序查找的ASL
double asl = (L.length + 1)*1.0 / 2;
return asl;
}
第5關(guān):基于鏈表的順序查找
任務(wù)描述
從plant.txt中讀取植物的基本信息,實(shí)現(xiàn)基于鏈表的順序查找。
編程要求
根據(jù)提示,在右側(cè)編輯器補(bǔ)充代碼,輸入植物學(xué)名,若查找成功,輸出該植物對(duì)應(yīng)的基本信息(名稱、分布地、詳情描述),同時(shí),輸出查找成功時(shí)的平均查找長(zhǎng)度ASL;否則,輸出“查找失敗!”。
測(cè)試說明
平臺(tái)會(huì)對(duì)你編寫的代碼進(jìn)行測(cè)試:
測(cè)試輸入: Gentiana omeiensis
預(yù)期輸出: 查找成功!
名稱:峨眉龍膽
分布地:四川
詳情描述:多年生草本,高30-40厘米,基部被黑褐色枯老膜質(zhì)葉鞘包圍。根莖短縮或伸長(zhǎng),平臥或斜伸,具多數(shù)略肉質(zhì)的須根。枝2-4個(gè)叢生,其中有1-3個(gè)營養(yǎng)枝和1個(gè)花枝;花枝直立,黃綠色或有時(shí)紫紅色,中空,近圓形,光滑。葉大部分基生,狹橢圓形或橢圓狀披針形,長(zhǎng)5.5-12厘米,寬1-1.5厘米,先端鈍,基部漸狹,葉脈3條,在兩面均明顯,并在下面稍突起,葉柄膜質(zhì),長(zhǎng)4-8厘米;莖生葉少,2-4對(duì),匙形,稀狹橢圓形,長(zhǎng)4-6厘米,寬1.5-2厘米,先端鈍,基部漸狹,葉脈1-3條,在兩面均明顯,并在下面突起,葉柄長(zhǎng)1-4.5厘米,愈向莖上部葉愈小,柄愈短?;ǘ鄶?shù),頂生和生上部葉腋中呈輪傘狀,稀花序下部分枝,有長(zhǎng)總花梗,無小花梗;花萼狹鐘形,長(zhǎng)11-13毫米,外面常帶紫色,萼筒草質(zhì),一側(cè)開裂,呈佛焰苞狀,邊緣膜質(zhì),萼齒極小,鉆形,長(zhǎng)1-1.5毫米,彎缺狹,截形;花冠藍(lán)色,無深色條紋和斑點(diǎn),筒狀鐘形,長(zhǎng)3.5-4厘米,裂片卵形,長(zhǎng)4.5-5.5毫米,先端圓形或鈍,上半部全緣,下半部有不整齊細(xì)齒,褶偏斜,截形或三角形,長(zhǎng)1-1.5毫米,先端急尖,邊緣有不整齊細(xì)齒;雄蕊著生于冠筒下部,整齊,花絲線狀鉆形,長(zhǎng)13-16毫米,花藥狹矩圓形,長(zhǎng)3-3.5毫米;子房線狀披針形,長(zhǎng)10-13毫米,兩端漸狹,柄長(zhǎng)10-13毫米,花柱短而粗,長(zhǎng)2-2.5毫米,柱頭小,2裂,裂片半圓形。蒴果內(nèi)藏,狹橢圓形,長(zhǎng)1.3-1.5厘米,兩端鈍,柄長(zhǎng)至1-2厘米;種子黃褐色,有光澤,矩圓形,長(zhǎng)1-1.2毫米,表面具海綿狀網(wǎng)隙?;ü?-9月。
平均查找長(zhǎng)度ASL為:3245.50
測(cè)試輸入: Pelargonium hortorum
預(yù)期輸出: 查找失敗!
#include<bits/stdc++.h>
using namespace std;
struct Plant{ //植物信息定義
string name; //名稱
string sname; //學(xué)名
string place[100]; //分布地
string detail; //詳情描述
};
typedef struct LNode{ //單鏈表
Plant data;
struct LNode *next;
}LNode,*LinkList;
void InitList(LinkList& L)
{//構(gòu)造一個(gè)空的單鏈表L
L = new LNode;
L->next = NULL;
}
void ListInsert(LinkList& L, int i, Plant temp) {
//在帶頭結(jié)點(diǎn)的單鏈表L中第i個(gè)位置插入新結(jié)點(diǎn)
LNode* p = new LNode;
LNode* q = new LNode;
p->data = temp;
q = L;
while (i > 1) {
q = q->next;
i--;
}
p->next = q->next;
q->next = p;
}
int ReadFile(LinkList& L, string filename) {
//讀取plant.txt文件,調(diào)用ListInsert函數(shù)將每條植物數(shù)據(jù)插入鏈表
//返回樹木數(shù)據(jù)的條數(shù)
ifstream infile;
infile.open(filename.c_str());
string line;
int i = 1;
while (getline(infile, line)) {
Plant temp;
stringstream data(line);
string s;
int flag = 0;
while (getline(data, s, '#')) {
if (flag == 0) temp.name = s;
if (flag == 1) temp.sname = s;
if (flag == 2) {
stringstream ssplace(s);
string place;
int placenum = 0;
while (getline(ssplace, place, '@')) {
temp.place[placenum] = place;
placenum++;
}
}
if (flag == 3) temp.detail = s;
flag++;
}
ListInsert(L, i, temp);
i++;
}
infile.close();
return i - 1;
}
LNode* LocateElem(LinkList L, string key) {
//在帶頭結(jié)點(diǎn)的單鏈表L中查找植物學(xué)名為key的元素
LNode* p = new LNode;
p = L->next;
while (p) {
if (p->data.sname == key) {
return p;
}
p = p->next;
}
return NULL;
}
double ASL_LinkList(LinkList L, int count) {
//返回基于鏈表的順序查找的ASL
LNode *p = new LNode;
p = L->next;
int i = 0;
while (p) {
p = p->next;
i++;
}
double asl = (i + 1)*1.0 / 2;
return asl;
}
后續(xù)更新剩下關(guān)卡文章來源地址http://www.zghlxwxcb.cn/news/detail-847717.html
到了這里,關(guān)于數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)C/C++版--植物百科數(shù)據(jù)的管理與分析的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!