视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
源代码:车厢调度:数据结构课程设计
2025-09-28 00:59:21 责编:小OO
文档
源代码::↓

课程设计任务书及成绩评定

课题名称       车厢调度

Ⅰ、题目的目的和要求: 

  1、设计目的

巩固和加深对数据结构的理解,通过上机实验、调试程序,加深对课本知识的理解,最终使学生能够熟练应用数据结构的知识写程序。

(1)通过本课程的学习,能熟练掌握几种基本数据结构的基本操作。

(2)能针对给定题目,选择相应的数据结构,分析并设计算法,进而给出问题的正确求解过程并编写代码实现。

2、设计题目要求: 

 问题描述:假设停在铁路调度站入口处的车厢序列的编号一次为 1,2,3,……,n。设计一个程序,求出所有可能由此输出的长度为n的车厢序列;

Ⅱ、设计进度及完成情况

日  期

内               容

1.10-1.11选取参考书,查阅有关文献资料,完成资料搜集和系统分析工作。
1.12~1.14创建相关数据结构,录入源程序。
1.17~1.19调试程序并记录调试中的问题,初步完成课程设计报告。
1.20~1.21上交课程设计报告打印版并进行课程设计答辩,要求每个同学针对自己的设计回答指导教师3-4个问题。
考核结束后将课程设计报告和源程序的电子版长统一刻光盘上交。
Ⅲ、主要参考文献及资料

[1] 严蔚敏 数据结构(C语言版)清华大学出版社 1999

[2] 严蔚敏 数据结构题集(C语言版)清华大学出版社 1999

[3] 谭浩强  C语言程序设计  清华大学出版社

[4] 与所用编程环境相配套的C语言或C++相关的资料

源代码

#include

#include

#include

#define STACK_INIT_SIZE 100

#define STACKINCREMENT 10

#define ERROR 0

#define OK 1

#define OVERFLOW -2

typedef int Status;

typedef struct{

 int *base; //栈底指针

 栈顶指针

 栈空间大小

}SqStack;

Status InitStack(SqStack &S)

{

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

 if(!S.base)exit(OVERFLOW);

 S.top=S.base;

 S.stacksize=STACK_INIT_SIZE;

 return OK;

}创栈

Status Push(SqStack &S,int e)

{

if((S.top-S.base)>=S.stacksize)

 {

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

  if(!S.base)exit(OVERFLOW);

  S.top=S.base+S.stacksize;

  S.stacksize+=STACKINCREMENT;

  }

 *S.top++=e;

 return OK;

}  //进栈

Status Pop(SqStack &S,int &e)

{

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

 e=*--S.top;

 return OK;

}  //出栈

Status StackEmpty(SqStack &S)

{

 if(S.top==S.base)

 return 1;

 else return 0;

}判断空栈

void print(int b[],int n)

{

 int k;

for(k=0;k printf("%d ",b[k]);

 printf("\\n");

}

void f(SqStack S,int a[],int b[],int p,int q,int n)

{

if(p{

 递归进栈

 f(S,a,b,p+1,q,n);

 Pop(S,b[q]);

}

 if(!StackEmpty(S))

 {

 递归出栈

  f(S,a,b,p,q+1,n);

  Push(S,b[q]);

  }

  if(q>=n&&StackEmpty(S))print(b,n); //出栈完输出序列号

 }

int main()

{ int i,n,a[STACK_INIT_SIZE],b[STACK_INIT_SIZE];

  printf("请输入待调车厢数:\\n");

  scanf("%d",&n);

  SqStack S;

  InitStack(S);

for(i=0;i  a[i]=i+1;

  printf("输出序列号为:\\n");

  f(S,a,b,0,0,n);

  return 0;

}下载本文

显示全文
专题