国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)C/C++版--植物百科數(shù)據(jù)的管理與分析

這篇具有很好參考價(jià)值的文章主要介紹了數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)C/C++版--植物百科數(shù)據(jù)的管理與分析。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

注意:評(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ù)期輸出: 查找失敗!

#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)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包