201003

发布时间:2016-12-8 8:27:19 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"201003",主要涉及到201003方面的内容,对于201003感兴趣的同学可以参考一下。

1      题目概述:实现栈操作功能 1.1      试题考核目的和使用说明 考核目的:本试题主要考核基本的栈操作知识和编码技能(本试题已经设计好了代码基本框架,考生只要理解该框架并进行编码实现即可)。 答卷提交:请使用试题包中的stack_fun.c和stack_fun.h提交编写调试后的源代码(所有源代码均应在这两个文件中,不能增加或者删减源文件),把这两个文件用WinRar打包成一个文件,命名格式为“考试级别数字+调测环境代号+8位工号”的格式,如: 张三的工号为00187658,考0级,使用Tornado调测环境(代号为AT,A表示是试题A卷,T表示是Tornado环境),则打包文件的名称为: 0AT00187658.rar 李四的工号为00198765,考1级,使用VC调测环境(代号为AV,A表示是试题A卷,V表示是VC环境),则打包文件的名称为: 1AV00198765.rar 使用说明:本次技能鉴定考试提供两份试题(A卷和B卷)供考生选择其中的一份答题,本试题是两份试题中的A卷。本试题支持通过Tornado调测环境和Visual C++调测环境进行调测,并提供了已经建好的工程,具体使用方法参见“1.6 工程介绍”。 1.2      试题简介 试题简介:栈(Stack)结构是计算机语言实现中的一种重要数据结构。栈是一种后进先出(LIFO)的结构,对于任意栈,进行数据入栈和出栈操作的一端称为栈顶(Stack Top),而另一端称为栈底(Stack Bottom)。栈的基本操作包括:创建栈(NewStack)、 判断栈是否为空(IsEmpty)、获取栈顶数据(Top)、压栈/入栈(Push)、弹栈/出栈(Pop)。 本题请考生完成栈结构的操作功能: (1)   提供创建空栈的函数接口; (2)   提供销毁栈结构的函数接口; (3)       提供数据入栈操作的函数接口; (4)       提供数据出栈操作的函数接口; (5)       提供显示栈中数据的函数接口。 1.3      试题详细说明 1.3.1        设计栈的数据结构和栈操作相关的函数 要求:设计实现栈的数据结构STRU_STACK(特别提示:该结构需要考生首先设计编码,否则工程会编译失败,只要增加一个成员变量进去就可以编译通过了),并提供如下与栈操作相关的函数接口和功能 (1)       创建一个整数栈,用于存放整数数据。栈结构体类型STRU_STACK由考生自行定义。栈大小为不定长,只要有足够内存即可。 函数原型:STRU_STACK* NewStack(void) 函数功能:创建一个空栈(栈中无数据) 输入说明:无 输出说明:无 返回值:指向所创建的栈的指针,创建失败时返回空指针。   (2)       销毁一个整数栈结构,释放相关的资源 函数原型:int DestroyStack(STRU_STACK* pstrStack) 函数功能:销毁一个指定的整数栈,释放相关资源。 输入说明:pstrStack:指向指定整数栈的指针 输出说明:无 返回值:0——操作成功; 非0——操作失败(出现参数错误等)。   (3)       数据入栈操作,通过如下函数获得: 函数原型:int Push(STRU_STACK * pstrStack, int iData) 函数功能:将指定数据入栈,放到栈顶。 输入说明:pstrStack:栈指针 iData:入栈的数据 输出说明:无 返回值:0——入栈成功; 非0——入栈失败(出现参数错误或内存不足等)。 (4)       数据出栈操作,通过如下函数获得: 函数原型:int Pop(STRU_STACK* pstrStack, int *pOutData) 函数功能:从指定栈中弹出一个数据。栈是LIFO结构,弹出栈顶的数据。 输入说明:pstrStack:栈指针 输出说明:*pOutData,出栈的数据。 返回值:0——出栈成功; 非0——出栈失败(出现参数错误或者栈中无数据等错误)。 (5)       显示栈中保存的数据,通过如下函数获得。要求:数据显示时每个数据之间用逗号隔离,每行最多显示8个数据。 函数原型:int ShowStack(STRU_STACK *pstrStack, int iOrder) 函数功能:根据要求按顺序显示栈中保存的数据。 输入说明:pstrStack:栈指针          iOrder:0——表示从栈底向栈顶的方向逐个显示数据,                  1——表示从栈顶到栈底的方向逐个显示数据。 输出说明:无 返回值:0——操作成功; 非0——操作失败(出现参数错误等)。 打印格式要求如下:(示例) (1)栈为空时: The Stack is empty! (2)栈非空且从栈底向栈顶方向逐个显示数据: Stack data from bottom to top: 1, 5,  8,  21, 3,  0,  -8, 390, -11, 9, 8 (3)栈非空且从栈顶向栈底方向逐个显示数据: Stack data from top to bottom: 8,  9,  -11,390,-8, 0,  3,  21, 8,  5,  1   1.3.2        使用到的API说明 (1)       内存分配和释放必须使用试题组提供工程中的库文件(VC工程为testLib.lib,tornado工程中为testLib.a,考生直接打开工程后即可自动加入这两个库文件,无需单独链接或者下载库文件)中提供的API(目的是为了监控是否存在内存泄漏),原型为: void *Mem_alloc     (     unsigned int nBytes             /* number of bytes to allocate */     ) void Mem_free     (     void * ptr                /* pointer to block of memory to free */     ) (2)       打印函数直接使用标准库函数,原型为: int printf     (     const char * fmt,         /* format string to write */                  ...          /* optional arguments to format string */     )   1.3.3        编程要求 编程框架包括一个stack_fun.h文件和一个stack_fun.c文件。 (1)       stack_fun.h用于定义对外提供的数据结构和接口定义 (2)       stack_fun.c用于实现具体的函数功能   1.4      代码的验收标准 (1)      正确实现栈操作的基本功能,按照要求显示栈中的内容。测试用例可参考测试用例1(参见1.5 代码的参考测试用例)。 (2)      代码实现可靠,没有内存泄漏。 (3)               代码设计具有鲁棒性,考虑各种异常情况。例如在空栈情况下,弹栈不会造成踩内存等情况。 1.5      代码的参考测试用例(仅作调试参考) 测试用例1:测试栈的基本正常功能 #include "stdio.h" #include "stack_fun.h" typedef enum    {     STACK_OK = 0,           STACK_CREAT_FAIL = -1,   /* 栈创建失败 */     STACK_PUSH_FAIL = -2,    /* 压栈失败 */     STACK_POP_FAIL = -3      /* 弹栈失败 */ } STACK_RET_ENUM;     int TestCase01() {    int i,j;    STRU_STACK *pStack = NewStack();      if(NULL == pStack)    {        return STACK_CREAT_FAIL;    }      i = 5;    for(i=0;i<5;i++)    {        if(Push(pStack, i))        {            return STACK_PUSH_FAIL;        }               }      ShowStack(pStack, 0);      for(i=0;i<3;i++)    {        if(Pop(pStack, &j))        {            return STACK_POP_FAIL;        }        printf("pop %d\n", j);    }      ShowStack(pStack, 1);    return STACK_OK; }   该用例执行后应返回0,并且有如下打印: Stack data from bottom to top: 0, 1, 2, 3, 4 Pop 4 Pop 3 Pop 2   Stack data from top to bottom: 1, 0     1.6      工程介绍 1.6.1        VC环境下使用workspace工程 (1)工程目录: 双击\workspace\stack\ stack.dsw程序可以直接打开工程环境,源代码框架已经提前加到工程中了。 (2)源码目录:需提供的源文件stack_fun.c和stack_fun.h都放到该目录下,已提供框架 \workspace\stack\code\src (3)测试代码目录:(仅供调试参考,可以自行添加测试代码,测试代码本身不进行验收) \workspace\stack\code\testcode (4)API库目录,存放了所用到的API所在的库文件testLib.lib: \workspace\testLib   1.6.2        Torado环境下使用workspace_tc工程 (1)工程目录: 双击\workspace_tc\stack\ stack.wpj程序可以直接打开工程环境(注意解压缩的父目录不要有中文字符),源代码框架已经提前加到工程中了。 (2)源码目录:考生需提供的源文件stack_fun.c和stack_fun.h都放到该目录下,已提供框架 \workspace_tc\stack\code\src (3)测试代码目录:(仅供调试参考) \workspace_tc\stack\code\testcode (4)API库目录,存放了所用到的API所在的库文件testLib.a: \workspace_tc\testLib  

上一篇:Linux多线程——使用互斥量同步线程
下一篇:200910

相关文章

关键词: 201003

相关评论