freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

數(shù)據(jù)結(jié)構(gòu)家譜管理系統(tǒng)(已修改)

2025-01-30 11:08 本頁面
 

【正文】 摘 要在本次家譜課程設(shè)計(jì)中采用二叉樹來表示家譜關(guān)系,由于在家譜中每個家族成員的子女不止一個,而雙親只有一個,所以采用二叉樹結(jié)構(gòu)來描述家族成員之間的關(guān)系。在家譜課程設(shè)計(jì)中還用到單鏈表,在設(shè)計(jì)中要將二叉樹存儲在文件中,最終要讀取文件中的記錄,要將文件中的數(shù)據(jù)還原到內(nèi)存中組成二叉樹結(jié)構(gòu),而文件中元素與元素之間的結(jié)構(gòu)是線性,而且直接對文件中的數(shù)據(jù)操作很不方便,所以將文件中的元素存儲在單鏈表中,再對單鏈表操作還原成內(nèi)存中的二叉樹。 在對家譜的文件操作中,為了還原家譜方便,采用按層遍歷的順序保存二叉樹中各結(jié)點(diǎn)的信息,在層次遍歷中,使用隊(duì)列來實(shí)現(xiàn)二叉樹的層次遍歷。本家譜主要包括兩個模塊,第一個是文件操作功能模塊,此模塊實(shí)現(xiàn)了家譜記錄輸入、讀取存盤記錄、清除家譜存盤記錄、添加成員、存盤、修改家譜成員信息、刪除家譜成員等七大功能;第二個是家譜操作功能模塊,實(shí)現(xiàn)了查找某人記錄、查找某人的孩子、查找某人的祖先、用括號表示法輸出家譜、用凹入表示法輸出家譜等六大功能。 關(guān)鍵詞: Binarytnode save search addRecord del change clear 本程序功能框架圖家譜管理系統(tǒng) 家譜操作功能文件操作功能 用凹入表示法輸出家譜用括號表示法輸出家譜查找某人的祖先查找某人的孩子查找某人記錄刪除家譜成員修改家譜成員信息存盤清除家譜存盤記錄讀取存盤記錄家譜記錄輸入添加成員1. 項(xiàng)目總體設(shè)計(jì) 需求分析 (1) 文件操作功能:記錄輸入、記錄輸出、清除全部文件記錄和將家譜記錄存盤。初始化:用戶可輸入一個家族的族譜,輸入完成之后可保存在文件中。在其后的操作中,可從文件里讀取族譜信息、增加新的家族成員、修改已有的家族成員、刪除已存在的家族成員、可清除所有的家族成員信息。操作完成之后可保存在文件中。 (2) 家譜操作功能:用括號表示法和凹入法輸出家譜二叉樹,并能查找某人的配偶、所有孩子、所有祖先、兄弟等功能。: 一.問題描述 本課程設(shè)計(jì)的主要問題是選擇一種數(shù)據(jù)結(jié)構(gòu)來描述家譜中家族成員之間的關(guān)系,在此數(shù)據(jù)結(jié)構(gòu)上加之一些操作,選用特定的算法來實(shí)現(xiàn)家譜操作的功能和文件操作的功能。 二.基本要求 設(shè)計(jì)要求:編寫一個程序,采用一棵二叉樹表示一個家譜關(guān)系。 具體要求: (1) 文件操作功能:記錄輸入、記錄輸出、清除全部文件記錄和將家譜記錄存盤。 (2) 家譜操作功能:用括號表示法和凹入法輸出家譜二叉樹,并能查找某人所有的兒子,查找某人的所有祖先。 三.概要設(shè)計(jì) 1.?dāng)?shù)據(jù)結(jié)構(gòu)的設(shè)計(jì) 在家譜課程設(shè)計(jì)中采用二叉樹來表示家譜關(guān)系,由于在家譜中每個家族成員的子女不止一個,而雙親只有一個,所以采用二叉樹結(jié)構(gòu)來描述家族成員之間的關(guān)系。在家譜課程設(shè)計(jì)中還用到單鏈表,在設(shè)計(jì)中要將二叉樹存儲在文件中,最終要讀取文件中的記錄,要將文件中的數(shù)據(jù)還原到內(nèi)存中組成二叉樹結(jié)構(gòu),而文件中元素與元素之間的結(jié)構(gòu)是線性,而且直接對文件中的數(shù)據(jù)操作很不方便,所以將文件中的元素存儲在單鏈表中,再對單鏈表操作還原成內(nèi)存中的二叉樹。 在對家譜的文件操作中,為了還原家譜方便,采用按層遍歷的順序保存二叉樹中各結(jié)點(diǎn)的信息,在層次遍歷中,使用隊(duì)列來實(shí)現(xiàn)二叉樹的層次遍歷。 2.算法的設(shè)計(jì) 本設(shè)計(jì)從總體上主要分2個模塊,分別是家譜操作模塊和文件操作模塊。 家譜操作模塊: 1)Binarytnode* Binarytree::bulid(Binarytnode* p,int num);//輸入家譜,形參p為二叉樹根結(jié)點(diǎn)的地址,形參num為結(jié)點(diǎn)的編號,建立二叉樹并返回這棵二叉樹的根結(jié)點(diǎn)的地址。 算法:首先先建立一個二叉樹結(jié)點(diǎn),提示用戶輸入該結(jié)點(diǎn)的姓名,將 用戶輸入的姓名寫入到該結(jié)點(diǎn)的成員變量name中,將形參num寫入到該結(jié)點(diǎn)的成員變量number中,將雙親結(jié)點(diǎn)的地址賦給結(jié)點(diǎn)的成員變量的雙親指針,提示用戶是否有左孩子,若有左孩子則遞歸調(diào)用通過形參將雙親結(jié)點(diǎn)的地址傳遞過去,遞歸調(diào)用返回的地址賦給它的雙親結(jié)點(diǎn)的左孩子指針,右孩子的建立同理可得,通過遞歸來建立整棵二叉樹。 2)Binarytnode* Binarytree::searchRecord(string name);//形參name要查找的姓名,按姓名查找某人記錄,若找到記錄則返回該節(jié)點(diǎn)的地址,反之,則返回一個空指針。 算法:通過層次遍歷來和每個結(jié)點(diǎn)的成員變量name比較若姓名匹配則返回該節(jié)點(diǎn)的地址。首先判斷二叉樹的根結(jié)點(diǎn)是否為為空,若為空則不進(jìn)行查找。反之,則將根結(jié)點(diǎn)入隊(duì)列,然后進(jìn)入一個循環(huán)體,使循環(huán)為真的條件是隊(duì)列不為空,循環(huán)體語句是取隊(duì)頭元素,然后對該元素的判斷它的成員變量name是否與查找的姓名相匹配。若匹配則返回該結(jié)點(diǎn)的地址,若不匹配,則刪除隊(duì)頭元素將它的左右孩子入隊(duì)列(左右孩子不空的情況下),進(jìn)行循環(huán)。若直到遍歷完整棵子樹都還沒找到,則返回一個空指針。 3)void Binarytree::searchChild(string name);//形參name要查找的姓名,按姓名查找某人的孩子,若找到記錄則顯示該節(jié)點(diǎn)孩子的姓名,反之,則提示未找到信息。 算法:調(diào)用Binarytnode* searchRecord(string name)函數(shù)查找與參數(shù) name相匹配的記錄,然后判斷其返回的地址是否為空,若為空則不進(jìn)行查找其子女,若不為空,則輸出其左右孩子(左右孩子不空的情況下)。 4)void Binarytree::searchParent(string name);//形參name要查找的姓名,按姓名查找某人的祖先,若找到記錄則按輩份從小到大顯示該節(jié)點(diǎn)的祖先,反之,則提示未找到信息。 算法:調(diào)用Binarytnode* searchRecord(string name)函數(shù)查找與參數(shù) name相匹配的記錄,然后判斷其返回的地址是否為空,若為空則不進(jìn)行查找其雙親,若不為空,則用循環(huán)通過雙親指針按輩分從小到大輸出雙親的姓名,直到雙親的地址為空,結(jié)束循環(huán)。 5)void Binarytree::addRecord(string parent,string name);//插入家族成員記錄,形參parent為要插入的家族成員的雙親姓名,形參name為要插入家族成員的姓名。 算法:調(diào)用Binarytnode* searchRecord(string name)函數(shù)查找與參數(shù) name相匹配的記錄,然后判斷其返回
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號-1