数据结构设计报告 一、设计目的: 《数据结构》是计算机应用技术专业一门重要的专业技术基础课程,是一门关键性核心课程; 通过这次设计,要求在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现方面,加深对课程基本内容的理解。同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。 二、实验名称: 商品货架管理 程序如下: #include
#include #include #define TRUE 1 #define FALSE 0 #define Stack_Size 100 typedef int StaEle_Type; typedef struct { StaEle_Type elem[Stack_Size]; int top; }SeqStack; int Push(SeqStack *S,StaEle_Type x) { if (S->top==Stack_Size-1) printf(\"商品已满无法进货\"); S->top++; S->elem[S->top]=x; return (TRUE); } int Pop(SeqStack *S,StaEle_Type *x) { if(S->top==-1) { printf(\"商品空无法输出\"); return(FALSE); } else { *x=S->elem[S->top]; S->top--; return(TRUE); } } void main() { int a[200],i,x,j,t,h,g; printf(\"请输入你的商品数量:\\n\"); scanf(\"%d\ while(x>=200||x<=0) { printf(\"你输入的数值有误,请重新输入0~200之间的数:\"); scanf(\"%d\ } printf(\"请一一输入商品的年月:\\n\"); for(i=1;i<=x;i++) { scanf(\"%d\ h=a[i]%100; g=a[i]/100000; while(!(g&&(h>=1&&h<=12))) { printf(\"你输入的日期有误(可能月份有错误),请重新输例如199901的数:\"); scanf(\"%d\ h=a[i]%100; g=a[i]/100000; } } printf(\"\\n\"); for(j=1;j<=x-1;j++) for(i=1;i<=x-j;i++) if(a[i]>a[i+1]) { t=a[i]; a[i]=a[i+1]; a[i+1]=t; }//先将商品排序,使商品能按照顺序输出 SeqStack *ST; int c1,*c2; ST= (SeqStack*)malloc(sizeof(SeqStack)); c2=(int *)malloc(sizeof(int)); ST->top=-1; i=1; while(i<=x) { c1=a[i]; Push(ST,c1); i++; } printf(\"输出出栈日期为:\\n\"); do { Pop(ST,c2); printf(\"%d\ printf(\"\\n\"); }while(ST->top!=-1); printf(\"制做小组成员:\\n李凯\\n沈续意\\n周宇\\n王伟利\\n李逵\\n廖明明\\n张群\"); getch(); } 三、 内容概过: 1. 开始程序利用冒泡的方法给整个程序排序,输入的形式主要是栈的入栈顺序输入,值在0~200之间,然后以出栈的形式输出,主要是利用栈的后进先出来完成商品的货架管理,后在插入入栈和出栈各个模块之间是紧密相连的,统一起来实现整个程序的功能。 2. 先是入栈,首先应该输入正确的值在0~200之间不能出现字符否者可能出错的。第二步就是出栈,在计算机上就可以显示输出的结果,达到实现的功能。在调试过程中遇到的既有语法错误,也有逻辑错误。然后针对不同的错误作出不同的修改。即可达到正确的结果。 3. 输入商品的数量:x;输入商品的生产日期:y;即可得到最后的输出结果是按照生产日期的后进先出顺序写出的。 四、 经验体会: 在整个程序设计的过程中,我们通过不断地编译、执行再编译、执行,从中可以发现很多不足之处,然后慢慢改进,也体味到了一个团队的力量是多么的重要,一个人的力量是有限的,只有通过整个团队共同的努力、共同的付出,才能达到更好的效果,通过这次实验,我也收获了许多,希望在今后计算机领域的发展中能有所成就。 电子信息工程系 09计应一班:李逵 学号:093380127 2010年6月20日