《课程设计说明书》模版

发布 2022-10-02 19:49:28 阅读 3333

1. 设计1 约瑟夫环问题

一、需求分析。

1、利用单向循环链表存储结构模拟此过程,按照出列的顺序印出个人的编号,只适用于一个案例。

具体目标包括:

(1)实现单循环链表的初始化;

(2)理解约瑟夫环的定义,用循环找到每次报数人的序号;

(3)从单循环链表中删除节点,并判断链表空与非空的临界条件。

2、构造一个含有n个元素的单向循环链表。

adt circlelist

数据关系:r=

基本操作:link initlist(int n)

操作结果:构造一个含有n个元素的单向循环链表。

3、程序中,先输入总人数 pn与初始密码sn,再输入输入 n 个正整数,作为这n个人的密码,接下来初始密码 m。

4、测试数据 pn=5 sn=2 ,n 个人的密码依次 = 1 4 6 4 8。 出列为:2 1 3 5 4。

二、概要设计。

1、函数功能在main函数中实现。

void main(void)

int pn, sn,i;

linklist l;

printf("请输入总人数pn,和出示密码sn:")

scanf("%d%d",&pn,&sn);

int a[n];

a[0]=sn;将a[0]保存为初始密码。

printf("请输入%d个人各自所持的密码:",pn);

for(i=1;iscanf("%d",&a[i]);

创建链表。creatlinklist(&l, pn);

报数删人,输出结果。

printf("result:");

deldata(&l,pn,a);

2、程序包括两部分。

1)结点类型。

2)main函数实现约瑟夫环。

三、详细设计。

1、结点类型

typedef struct node

int data;将这一圈人按从1~pn贴上序号。

struct node *next;

node,*linklist;

linklist ",j, p->data,a[j]);

j++;i=p->data;

p->data=p->next->data;

q=p->next;

p->next = p->next->next;

free(q);

void main(void)

int pn, sn,i;

linklist l;

printf("请输入总人数pn,和出示密码sn:")

scanf("%d%d",&pn,&sn);

int a[n];

a[0]=sn;将a[0]保存为初始密码。

printf("请输入%d个人各自所持的密码:",pn);

for(i=1;iscanf("%d",&a[i]);

创建链表。creatlinklist(&l, pn);

报数删人,输出结果。

printf("result:");

deldata(&l,pn,a);

2. 设计2 迷宫问题

一、需求分析。

1.问题描述:

算术表达式与二叉树之间存在着对应关系,编写把以前缀形式输入的合法算术表达式转换为中缀表达式,再转换为后缀表达式,并求表达式的值。

2.具体目标包括:

1) 把前缀表达式转换为中缀表达式;

2) 输出中缀表达式;

3) 把中缀表达式转换为后缀表达式;

4) 利用栈结构实现后缀表达式的求值;

3.栈的抽象数据类型的定义:

adt stack

数据关系:r1=

基本操作:initstack(sqstack *s)

push(sqstack *s,snodeetype e)

pop(sqstack *s,snodeetype *e)

stackempty(sqstack *s)

} adt stack

二、概要设计。

1、主模块(函数功能在main函数中实现)

void main()

流程图12、bitree creatbitree(bitree t)

按前缀形式输入算术表达式。

构造二叉链表表示的二叉树t

char ch;

scanf("%c",&ch);

switch(ch)

return t;

流程图2四、运行结果及分析。

五、总结。本程序主要应用三元组处理矩阵,利用矩阵的加法和乘法求自反闭包、对称闭包和传递闭包。

附:主要源**。

#includestatus enqueue(linkqueue *q,qelemtype e)

插入以e为q的新的队尾元素。

queueptr p;

if(!(p=(queueptr)malloc(sizeof(qnode)))

exit(overflow);

p->data=e; p->next=null;

q->rear->next=p; q->rear=p;

return ok;}

status dequeue(linkqueue *q,qelemtype *e)

删除q的队头元素,用e返回其值。

queueptr p;

p=q->front->next; *e=p->data;

q->front->next=p->next;

if(q->rear==p) q->rear=q->front;

free(p);

return ok;}

status initstack(sqstack *s)

构造一个空栈s

s->base=(selemtype *)malloc(sizeof(selemtype));

if(!s->base)

exit(overflow); 存储分配失败。

s->top=s->base;

return ok;

initstack

void push(sqstack *s,snodeetype e)

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

selemtype *e1;

e1=(selemtype *)malloc(sizeof(selemtype));

e1->next=s->top; e1->data=e;s->top=e1;}push

status pop(sqstack *s,snodeetype *e)

若栈不空,则删除s的栈顶元素,用e返回其值,并返回ok,否则返回error

selemtype *e1;

if(s->top ==s->base)

return error;

*e=s->top->data;

e1=s->top;

s->top=s->top->next;

free(e1);

return ok; }

status stackempty(sqstack *s)

判断栈s是否为空,若不空返回true,否者返回false

if(s->top==s->base)

return true;

else return false;}

bitree creatbitree(bitree t)

按前缀形式输入算术表达式。

构造二叉链表表示的二叉树t

char ch;

scanf("%c",&ch);

switch(ch)

case '+

case '-

case '*

case ''

if(!(t=(bitnode *)malloc(sizeof(bitnode)))

exit(overflow);

t->data=ch;

t->lchild=(bitnode *)malloc(sizeof(bitnode));

t->rchild=(bitnode *)malloc(sizeof(bitnode));

t->lchild=creatbitree(t->lchild);

t->rchild=creatbitree(t->rchild);

break;

default:

if(!(t=(bitnode *)malloc(sizeof(bitnode)))

exit(overflow);

t->data=ch; t->lchild=null;

《课程设计说明书》模版

1.设计1 约瑟夫环问题 一 需求分析。1 程序中,先输入人数 n,再输入输入 n 个正整数,作为这 n 个人的密码,接下来初始密码 m。2 2 本程序只适用于一个案例。3 测试数据 m 5 n 2 n 个人的密码依次 1 4 6 4 8。出列为 2 1 3 5 4。二 概要设计。1 函数功能在ma...

课程设计说明书

材料化学。涂装工艺。班级 材料化学081 姓名。学号。指导教师。时间 二 一一年七月八日 19 09 56 目录。表面工程课程设计任务书 1 1 概况 2 1.1 设计任务书及目标 2 1.2 设计任务书 2 1.3 设计单位概况 2 1.4 设计原则 4 1.5 设计范围 4 1.6 设计技术标准...

课程设计说明书

一 题目 离合器接合叉零件加工工艺规程 及车 25外圆及端面夹具设计 二 时间 自年月日至年月日止。三 要求 1 编制离合器接合叉加工工艺规程一套。2 绘制离合器接合叉零件图一张。3 绘制夹具结构装配图一张。4 绘制夹具体图一张。5.编写设计说明书一份。目录。序言1 第一章零件分析2 1.零件的作用...