教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 说明书 >

沈阳工程学院-数据结构课设报告(7)

来源:网络收集 时间:2026-04-13
导读: 沈阳工程学院课程设计 第四章 系统功能实现 功能实现图如图4.2所示。 图4.2 初始化约瑟夫生死环 4.1.4输出出队顺序函数 定义指针p指向要删除节点的前一个节点,ppHead指向要删除的节点,使p=ppHead,ppHead再指向要

沈阳工程学院课程设计 第四章 系统功能实现

功能实现图如图4.2所示。

图4.2 初始化约瑟夫生死环

4.1.4输出出队顺序函数

定义指针p指向要删除节点的前一个节点,ppHead指向要删除的节点,使p=ppHead,ppHead再指向要删除节点的下一个节点,使p和ppHead链接,输出p指向节点的编号和密码值,释放ppHead,如此循环,直至把所有节点都打印和删除为止!主要代码如下:

//出队函数

void jose(LNode *ppHead,int m_pwd) {

int i,j;

LNode *p,*p_del;//定义指针变量 for(i=1;p!=ppHead;i++){ for(j=1;j

p=ppHead;//p赋值为ppHead,p指向要删除结点的前一个结点 ppHead=ppHead->next;//ppHead指向下一个元素 }

p->next = ppHead->next;//p结点与头结点链接 i=ppHead->pwd;//i赋值为ppHead->pwd

j=ppHead->num;//j赋值为ppHead->num,j为要删除的密码值 printf(\第%d个人出列,密码:%d\\n\

m_pwd=ppHead->pwd;//m_pwd赋值为ppHead->pwd free(ppHead);//释放头结点

ppHead=p->next;//ppHead重新赋值给p->next,即释放前的ppHead->pwd指针 }

i=ppHead->pwd;//i赋值为ppHead->pwd j=ppHead->num;//j赋值为ppHead->num

printf(\最后一个出列是%d号,密码是:%d\\n\free(ppHead);//释放头结点

18

沈阳工程学院课程设计 第四章 系统功能实现

}

运行结果界面如图4.3所示。

图4.3 运行结果

4.2 安排教学计划

4.2.1头文件、宏、数据结构体定义

一般而言,每个C++/C程序通常由头文件(header files)和定义文件(definition files)组成。头文件作为一种包含功能函数、数据接口声明的载体文件,用于保存程序的声明(declaration),而定义文件用于保存程序的实现 (implementation)。文本文件单词的检索和计数中包含的头文件有:#include 定义输入/输出函数、#include 定义杂项函数及内存分配函数#include 和#include定义字符串函数,通过宏定义把空指针、错误返回值和正确返回值进行定义数值,结构体定义相关类型的链表空间有整型数据空间,单链表存储下一个指针空间。

//头文件定义

#include //输入输出函数头文件

#include //字符串转短整形函数的头文件

#include//内存分配函数头文件 #include //字符串函数头文件 //宏定义

#define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0

#define STACK_INIT_SIZE 100 //存储空间初始分配量 #define STACKINCREMENT 10 //存储空间分配增量

19

沈阳工程学院课程设计 第四章 系统功能实现

#define MAX_VERTEX_NUM 20 //数据结构类型定义 int NUM,C,N;//定义全局变量

typedef int Status;

typedef int SElemType; /定义类型名 typedef struct //栈的结构体

{

SElemType *base; //在栈构造之前和销毁之后,base的值为NULL SElemType *top; //栈顶指针

int stacksize; //当前已分配的存储空间,以元素为单位 }SqStack;

typedef struct ArcNode//弧的结构体

{

int adjvex;//该弧所指向的顶点的位置

struct ArcNode *nextarc;//指向第一条依附该顶点的弧的指针 }ArcNode;

typedef struct VNode//课程的结构体 {

char data[10];//课程名编号存储 char string[20];//课程名存储 ArcNode *firstarc;

}VNode,AdjList[MAX_VERTEX_NUM];

typedef struct//图的结构体 {

AdjList vertices;

int vexnum,arcnum;//图的当前顶点数和弧数 }ALGraph;

int indegree[20]={0};//存储图的入度的全局变量数组

4.2.2初始化栈、压栈、弹栈、判断栈空函数

本功能模块主要是通过源程序的编写实现的。对使用者在使用该软件时进行提示如下。本程序构造一个空栈S并予S存储空间函数,此函数可循环利用。具体代码如下:

//构造一个空栈S

Status InitStack(SqStack &S) {

S.base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType));

20

沈阳工程学院课程设计 第四章 系统功能实现

if(!S.base) =

return ERROR;//内存分配失败 S.top=S.base;

S.stacksize=STACK_INIT_SIZE; return OK;

}//InitStack

本功能模块主要是通过源程序的编写实现的。对使用者在使用该软件时进行提示如下。本程序对栈S插入元素e为新的栈顶元素的压栈函数,此函数可循环利用。具体代码如下:

//插入元素e为新的栈顶元素

Status Push(SqStack &S,SElemType e) { if(S.top-S.base>=S.stacksize) //栈满,追加存储空间 {

S.base=(SElemType*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType));

if(!S.base)

return ERROR;//存储分配失败 S.top=S.base+S.stacksize; S.stacksize+=STACKINCREMENT; } *S.top++=e; return OK; }//Push

本功能模块主要是通过源程序的编写实现的。对使用者在使用该软件时进行提示如下。本程序中若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;否则返回ERROR 。仍然是很简单的循环语句实现。具体代码如下:

//若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;否则返回ERROR Status Pop(SqStack &S,SElemType &e) {

if(S.top==S.base) return ERROR; e=*--S.top; return OK; }//Pop

本功能模块主要是通过源程序的编写实现的。对使用者在使用该软件时进行提示如下。本程序判断栈是否为空,为空返回TRUE否则返回,FALSE。仍然是很简单的循环语句实现。具体代码如下:

//判断栈是否为空,为空返回TRUE否则返回,FALSE Status StackEmpty(SqStack S)

21

沈阳工程学院课程设计 第四章 系统功能实现

{

if(S.top==S.base) return TRUE;

else return FALSE; }

4.2.3邻接表建立函数

本功能模块主要是通过源程序的编写实现的。对使用者在使用该软件时进行提示如下。本程序为创建邻接表,首先输入课程数目及课程间的先后关系数即为顶点数和弧数(教学计划应为有向图)其后输入课程编号,输入课程间两两间的先后关系即为有向边,以此创建邻接表。具体代码如下:

//建立邻接表

Status CreateDG(ALGraph &G) {

int i,v,w,vex;

printf(\请输入课程数目(课程数(顶点)必须小于等于12):\ scanf(\ if(vex>= …… 此处隐藏:1740字,全部文档内容请下载后查看。喜欢就下载吧 ……

沈阳工程学院-数据结构课设报告(7).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/449354.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)