• 大小: 2.18MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-09-30
  • 语言: C/C++
  • 标签: C语言  家族关系  

资源简介

课程实践相关的C语言做的家族关系查询系统

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#define MAXNUM 20
char family[100][20]; /* 全局变量*/

struct TriTree /* 树的三叉链表存储结构*/
 {
char data[MAXNUM];
struct Node *parent;
struct Node *lchild;
struct Node *rchild;
};

struct Node /* 队列的结点*/
{
struct TriTree *info;
struct Node *next;
};

struct linkQueue /* 链接队列类型*/
{
struct Node *front; 
struct Node *rear;
};

//链队的基本操作
//建立一个空队列
struct linkQueue *LQueueCreateEmpty( )
{
struct linkQueue *plqu; 
plqu=(struct linkQueue *)malloc(sizeof(struct linkQueue));
if (plqu!=NULL)
plqu->front=plqu->rear=NULL;
else
return NULL;
return plqu;
}
//进队列
void LQueueEnQueue(struct linkQueue *plqustruct TriTree *x)
 {
struct Node *p;
p=(struct Node *)malloc(sizeof(struct Node));
p->info=x;
p->next=NULL;
if(plqu->front==NULL)/* 原来为空队*/
plqu->front=p;
else
plqu->rear->next=p;
plqu->rear=p;
}
//出队列
void LQueueDeQueue(struct linkQueue *plqustruct TriTree *x)
 {
struct Node *p;
if(plqu->front==NULL)
return;
else
{
p=plqu->front;
x=p->info;
plqu->front=plqu->front->next;
free(p);
return;
}
}
//求队头元素
struct TriTree *LQueueGetFront(struct linkQueue *plqu)
{
return(plqu->front->info);
}

/* 建立家族关系树*/
struct TriTree *TriTreeCreate()
{
int i=0flag=0start=0;
char str[MAXNUM];
struct TriTree *t*x=NULL*tree*root=NULL;
struct linkQueue *q; /* 建立一个空队列*/
q=LQueueCreateEmpty();

strcpy(strfamily[i]);
i++; /* family数组下标*/
while(str[0]!=‘#‘)
{
while(str[0]!=‘@‘)
{
if(root==NULL) /* 空树*/
{
root=(struct TriTree *)malloc(sizeof(struct TriTree));
strcpy(root->datastr);
root->parent=NULL;
root->lchild=NULL;
root->rchild=NULL;
LQueueEnQueue(qroot);        /* 将root入队*/
tree=root;
}
else                             /* 不为空树*/
{
t=(struct TriTree *)malloc(sizeof(struct TriTree)); 
strcpy(t->datastr);

t->lchild=NULL;
t->rchild=NULL;
t->parent=LQueueGetFront(q); /* 当前结点的双亲为队头元素*/
LQueueEnQueue(qt);  /* 入队*/

if(flag==0) /* flag为0,当前结点没有左孩子*/
root->lchild=t;

else /* flag为1,当前结点已有左孩子*/
root->rchild=t;
root=t;
}
flag=1; /* 标记当前结点已有左孩子*/
strcpy(strfamily[i]);
i++;
}
if(start!=0) /* 标记不是第一次出现“@”*/
{
    LQueueDeQueue(qx);  /* 出队*/
if(q->front!=NULL)
root=LQueueGetFront(q); /* 队头元素*/ 
}

start=1; /* 标记已出现过“@”*/
flag=0; /* “@”后面的结点一定为左孩子*/
strcpy(strfamily[i]);

i++; 
 } 
 
 return tree; 
}

//建立家族关系并存入文件
struct TriTree *Create()
{
struct TriTree *t;

char* str0=“李一一“; char* str1= “@“;  char* str2=“李二一“; char* str3=“李二二“;
char* str4=“李二三“; char* str5=“@“;      char* str6=“李三一“; char* str7=“李三二“;        
ch

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2015-09-22 18:37  课程设计\
     文件       16676  2015-07-20 18:42  课程设计\家族关系代码.txt
     文件       16678  2015-07-20 18:39  课程设计\家族关系查询.c
     文件      278570  2015-07-18 13:57  课程设计\家族关系查询.exe
     文件       67584  2015-07-20 18:51  课程设计\家族关系查询系统设计报告.doc
     目录           0  2015-09-22 18:37  课程设计\数据结构课程设计\
     文件       16300  2015-07-20 22:09  课程设计\数据结构课程设计\家族关系代码.txt
     文件       16302  2015-07-20 22:02  课程设计\数据结构课程设计\家族关系查询.c
     文件      270387  2015-07-20 22:09  课程设计\数据结构课程设计\家族关系查询.exe
     文件     1912895  2015-07-22 20:43  课程设计\数据结构课程设计\家族关系查询系统设计报告.doc
     文件       44544  2005-07-07 20:25  课程设计\数据结构课程设计教学任务书.doc
     文件      412672  2005-07-13 14:33  课程设计\设计报告范例1.doc
     文件      430592  2006-01-01 03:19  课程设计\设计报告范例2.doc

评论

共有 条评论