家族关系查询系统程序设计算法思路_数据结构课程设计(家族关系查询系统)..doc...
數據結構課程設計(家族關系查詢系統).
1 課程設計介紹
1.1課程設計項目簡介
家譜是一種以表譜形式,記載一個以血緣關系為主體的家族世系繁衍和重要人物事跡的特殊圖書載體。家譜是中國特有的文化遺產,是中華民族的三大文獻之一,屬珍貴的人文資料,對于歷史學,民俗學,人口學,社會學和經濟學的深入研究,均有不可替代的重要功能。本項目對家譜管理進行簡單的模擬,以實現查看祖先和子孫個人信息 、插入家族成員等功能。
1.2課設題目分析
本程序的實質是完成對家譜成員信息的建立、查找、插入等功能。可以首先定義家族成員的數據結構,然后將每個功能寫成一個函數來完成對數據的操作,最后完成主函數以驗證各個函數功能并得出運行結果。
本程序包含以下幾個模塊
建立家族關系樹。此模塊將構建一個家族關系,對數據初始化,構造關系樹并錄入數據一遍后續程序使用。
添加新成員。此模塊將添加一個新成員,實現對家族關系的修改。
家族關系的查詢。此模塊將實現對家族不同關系的查詢
主程序模塊。此模塊實現整個程序的進入和進出,以及各種初始化處理。
1.3課程題目原理與數據結構
因為家族的成員之間存在一個對多個的層次結構關系,所以不能用線性表來表示和實現。家譜從形狀上看像一顆倒長的樹,所以用樹結構來表示比較合適。樹形結構是一類非常重要的非線性數據結構,直觀看來樹是以分支關系定義的層次結構。
因此本課程設計可以采用的數據結構有樹狀結構和隊列。樹狀結構采用三叉鏈表來實現,隊列采用鏈式隊列實現。
1.4功能分析說明圖
2 分析與實現
2.1 基本數據結構和棧隊的操作
2.1.1 結點基本數據結構和鏈隊的定義
/*家族關系樹實現*/
#include
#include
#include
#include
#include
#include
#include
#include
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR -1
#define INFEASIBLE -1
typedef char DataType;
#define MAXNUM 20
typedef struct TriTNode/* 樹的三叉鏈表存儲結構*/
{
DataType data[MAXNUM];
struct TriTNode *parent;/* 雙親*/
struct TriTNode *lchild;/* 左孩子*/
struct TriTNode *rchild;/* 右孩子*/
}TriTree;
typedef struct Node/* 隊列的結點結構*/
{
TriTree *info;
struct Node *next;
}Node;
typedef struct/* 鏈接隊列類型定義*/
{
struct Node *front; /* 頭指針*/
struct Node *rear; /* 尾指針*/
}LinkQueue;
DataType fname[MAXNUM],family[50][MAXNUM];/* 全局變量*/
LinkQueue *LQueueCreateEmpty( )/* 建立一個空隊列*/
{
LinkQueue *plqu=(LinkQueue *)malloc(sizeof(LinkQueue));
if (plqu!=NULL)
plqu->front=plqu->rear=NULL;
else
{
printf("內存不足!\n");
return NULL;
}
return plqu;
}
int LQueueIsEmpty(LinkQueue *plqu)/* 判斷鏈接表示隊列是否為空隊列*/
{
return(plqu->front==NULL);
}
void LQueueEnQueue(LinkQueue *plqu,TriTree *x)/* 進隊列*/
{
Node *p=(Node *)malloc(sizeof(Node));
if(p==NULL)
printf("內存分配失敗!\n");
else
{
p->info=x;
p->next=NULL;
總結
以上是生活随笔為你收集整理的家族关系查询系统程序设计算法思路_数据结构课程设计(家族关系查询系统)..doc...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一些有难度的网络流问题
- 下一篇: iphone 3.1.2开发环境搭建——