联系方式

  • QQ:99515681
  • 邮箱:99515681@qq.com
  • 工作时间:8:00-23:00
  • 微信:codinghelp

您当前位置:首页 >> C/C++编程C/C++编程

日期:2018-07-27 04:21



实践3:基于链式存储的人员信息管理系统

目的

掌握线性表的链式存储

内容

链式存储结构的设计、访问

作业要求

实践2的内容改为链式存储。


#include "stdio.h"

#include "string.h"

#include "malloc.h"

#define OK 1//符号常量

#define ERROR -1

typedef int Status;

struct DATE            //日期结构体类型

{ int month, day, year; };

typedef char NAME[20];//姓名字符数组类型

typedef char ADDRESS[500];//住址字符数组类型

typedef struct//人员结构体类型定义

{

int num;//编号,变量成员

NAME name;         //姓名,数组成员

char sex;              //性别,变量成员

struct DATE birth;//日期,变量成员

float salary;//工资,变量成员

ADDRESS address;//住址,数组成员

}PERSON;//人员数据类型


typedef struct NODE

{

PERSON person;//人员集合

struct NODE *next;//实际人数

}PEOPLE;//人员集合结构体类型定义


void Init();//函数声明

void Input();

Status Add();      

Status Update();

Status Delete();

Status Locate();

void Sort();

void Display();

void DisplayAll();

void DisplayPerson();

void Menu();


void main()

{

PEOPLE people;//定义人员存储空间

Init(&people); //初始化人员集合


}






实践4:树搜索

目的

(1)树的数据结构设计

(2)树的搜索算法实现

内容

(1)深度优先或广度优先的搜索

(2)判断一个节点是否在树中

作业要求

(1)设计一棵树,并实现树的存储建立

(2)实现判断一个节点在树中返回“真”,否则返回“假”


#include "stdio.h"

#include "string.h"

#include "malloc.h"


#define NAMESIZE 20

#define TRUE 1

#define FALSE 0


typedef int STATUS;


typedef char NODE[NAMESIZE];


struct BROTHERNODE

{

NODE node;                     //节点

   struct BROTHERNODE *next;      //兄弟节点

};


typedef struct BROTHERNODE *BROTHER;

typedef struct BROTHERNODE *STACK;

struct PARENTNODE

{

NODE node;                     //双亲节点

BROTHER children;              //子节点

};


typedef struct PARENTNODE PARENT;


struct TREENODE

{

PARENT node;                  //节点

struct TREENODE *next;        //其他节点

};


typedef struct TREENODE *TREE;


BROTHER AddABrother(BROTHER br, NODE node)

void priBrothers(BROTHER br)             //显示兄弟节点

TREE Form_Pa_Ch(NODE pa, BROTHER br)   //父节点和兄弟节点构成子树

TREE AddAsubTree(TREE tree, TREE subtree)  //子树加入树中

void priTree(TREE tree)                   //显示树

BROTHER ClearBrothers(BROTHER br)       //回收兄弟节点空间

TREE ClearTree(TREE tree)                //回收树空间

void CreateStr(char *brotherset)   //字符数组转换为多个字符串    

BROTHER CreateBrothers(BROTHER brothers, char *brotherset)  //若干节点构成入兄弟

TREE CreateTree(TREE tree, char *filename)  //从文件创建树

BROTHER ExpandNodes(TREE tree, NODE pa)   //有节点获取所有子节点

BROTHER CopyBrothers(BROTHER children)    //节点集拷贝

STACK PushChildren(STACK stack, BROTHER children)  //所有节点进栈

void priStack(STACK stack)                      //显示栈

STACK PopAChild(STACK stack, NODE child)    //退栈

STACK ClearStack(STACK stack)             //回收栈空间

STATUS Determine(TREE tree, NODE n)  //判断节点是否在树中,深度优先搜索

实践5:树路径求解

目的

(1)树的数据结构设计

(2)树的路径求解实现

内容

(1)深度优先或广度优先的搜索

(2)求解从树根到指定节点的路径

作业要求

(1)设计一棵树,并实现树的存储建立

(2)实现树根到指定节点的路径,如果指定节点不存在,返回空路径(即不可到达)

#include "stdio.h"

#include "string.h"

#include "malloc.h"


#define NAMESIZE 20

#define TRUE 1

#define FALSE 0


typedef int STATUS;


typedef char NODE[NAMESIZE];


struct BROTHERNODE

{

NODE node;                     //节点

   struct BROTHERNODE *next;      //兄弟节点

};


typedef struct BROTHERNODE *BROTHER;

struct PARENTNODE

{

NODE node;                     //双亲节点

BROTHER children;              //子节点

};


typedef struct PARENTNODE PARENT;


struct TREENODE                  //树的节点存储类型

{

PARENT node;                  //节点

struct TREENODE *next;        //其他节点

};


typedef struct TREENODE *TREE;    //树


typedef struct BROTHERNODE *PATH; //路径


struct PATHS                      //路径集合

{

PATH path;

struct PATHS *next;

};


typedef struct PATHS *STACK;     //路径栈


BROTHER AddABrother(BROTHER br, NODE node)  //加入一个节点到节点集

void priBrothers(BROTHER br)            //显示兄弟节点集

TREE Form_Pa_Ch(NODE pa, BROTHER br)   //父节点和兄弟节点构成子树

TREE AddAsubTree(TREE tree, TREE subtree) //子树加入树中

void priTree(TREE tree)               //显示树

BROTHER ClearBrothers(BROTHER br)   //回收兄弟节点空间

TREE ClearTree(TREE tree)         //回收树空间

void CreateStr(char *brotherset)   //字符数组转换为多个字符串    

BROTHER CreateBrothers(BROTHER brothers, char *brotherset)  //若干节点构成入兄弟

TREE CreateTree(TREE tree, char *filename)       //从文件创建树

BROTHER ExpandNodes(TREE tree, NODE pa)    //有节点获取所有子节点

BROTHER CopyBrothers(BROTHER children)      //节点集拷贝

PATH AddANodeToPath(NODE node, PATH path)   //节点加入路径中

PATH CopyPath(PATH path)                    //拷贝路径

struct PATHS *CopyPaths(struct PATHS *paths)  //拷贝路径集

void RevPath(PATH path)        //路径倒叙

void priPath(PATH path)         //显示路径

struct PATHS* AddAPathToPaths(PATH path,struct PATHS* paths)

struct PATHS* FormPathsFromNodes(BROTHER brothers, PATH path, struct PATHS* paths )

void priPaths(struct PATHS *paths)  //显示路径

PATH ClearPath(PATH path)

struct PATHS* ClearPaths(struct PATHS* paths) //回收树空间

STACK PushAPath(STACK stack, PATH path)   //一个路径进栈

STACK PushPaths(STACK stack, struct PATHS *paths) //所有路径进栈

void priStack(STACK stack)          //显示栈

STACK PopANode(STACK stack, NODE node, PATH *path)  //退栈,获取节点和路径

STACK ClearStack(STACK stack)   //回收栈空间

STATUS SearchPath(TREE tree, NODE start, NODE end,PATH *path) //判断节点是否在树中,并求取路径


实践6:图路径求解

目的

(1)图的数据结构设计

(2)图的路径求解实现

内容

(1)深度优先或广度优先的搜索

(2)求解指定节点到另一指定节点的路径

作业要求

(1)设计一张连通图,并实现图的存储建立

(2)实现指定节点到另一指定节点的路径。如果路径不存在,返回空路径

(3)在图路径基础上,实现九宫格的路径求解


实践7:启发式搜索

目的

高效问题求解算法设计

内容

(1)启发式函数设计

(2)图路径求解

(3)启发信息应用

内容

以九宫格为例实现启发式问题求解


版权所有:留学生编程辅导网 2020 All Rights Reserved 联系方式:QQ:99515681 微信:codinghelp 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。 站长地图

python代写
微信客服:codinghelp