最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

洛阳理工学院数据结构课程设计

来源:动视网 责编:小OO 时间:2025-09-28 08:24:42
文档

洛阳理工学院数据结构课程设计

洛阳理工学院课程设计说明书课程名称数据结构设计课题商品货架管理专业计算机科学与技术班级B120503学号B120*****姓名王磊完成日期2014年6月14日课程设计任务书设计题目:商品货架管理_________________________________________________________设计内容与要求:小四号宋体,行间距固定值12磅每段缩进两个字符注:如果题目太长行间距可以缩小,总之,这一页不可以分成两页。商品货架管理设计内容:商品货架可以看成一个栈,栈顶商品的生产日期最早
推荐度:
导读洛阳理工学院课程设计说明书课程名称数据结构设计课题商品货架管理专业计算机科学与技术班级B120503学号B120*****姓名王磊完成日期2014年6月14日课程设计任务书设计题目:商品货架管理_________________________________________________________设计内容与要求:小四号宋体,行间距固定值12磅每段缩进两个字符注:如果题目太长行间距可以缩小,总之,这一页不可以分成两页。商品货架管理设计内容:商品货架可以看成一个栈,栈顶商品的生产日期最早
洛 阳 理 工 学 院

课 程 设 计 说 明 书

课程名称              数据结构              

设计课题            商品货架管理            

专    业          计算机科学与技术          

班    级              B120503               

学    号              B120*****             

姓    名                王磊                

完成日期          2014年6月14日           

课 程 设 计 任 务 书

设计题目:          商品货架管理                         

_________________________________________________________

设计内容与要求:

小四号宋体,行间距固定值12磅

每段缩进两个字符

注:如果题目太长行间距可以缩小,总之,这一页不可以分成两页。

商品货架管理

设计内容:

商品货架可以看成一个栈,栈顶商品的生产日期最早,栈底商品的生产日期最近。上货时,需要倒货架,以保证生产日期较近的商品在较下的位置。

设计要求:

针对一种特定商品,实现上述管理过程。

                                  指导教师:王伟静

                                   2014 年 6 月5日

课 程 设 计 评 语

成绩:

                                     指导教师:

                                      年   月   日

【问题描述】

商品货架可以看成一个栈,栈顶商品的生产日期最早,栈底商品的生产日期最近。上货时,需要倒货架,以保证生产日期较近的商品在较下的位置。

【基本要求】

针对一种特定商品,实现上述管理过程。

【测试数据】

小四宋体,行间距单倍行距,每段缩进两个字符

【算法思想】

第一:先定义数据日期的结构体——里面包括年、月、日

第二:写进栈、出栈函数

第三:写倒货函数

      基本思想就是借助三个一维数组分别装载年(a[])、月(b[])、日(c[]),然后出栈并将所有元素放到这三个数组中,一个生产日期的年、月、日数组的下标必须必须相同否则就乱了。再将数组中元素按生产日期较近进行排序,最后一步将数组中的元素压到原来的栈中即可。

第四:函数输出,输出只是单纯的输出,不要求出战,故需要另写一个函数

第五:主函数因为可以循环使用,故用switch—case 语句即可实现

【模块划分】

进栈、出栈、倒货、输出和主函数

【数据结构】

栈:程序中使用的是链栈,链栈的好处是只要还有存储空间就会存储,结构体的next域指向下一个数据域,它的存储空间是随意的,可以连续,也可以不连续。

数组:数组的存储方式是连续的物理空间,下标即为存储位置,可以高效的运行

【测试情况】

小四宋体,行间距单倍行距

重点内容,每个功能抓图并且给予文字解释

【心得】

通过此次的课程设计让我深刻的了解到了数据结构是很难的,刚开始的写的时候,结构体定义就出错了,以至于后边的函数功能都出错了,就连输入都有错误,我刚开始以为是我的函数写错了呐!把进栈、出栈函数照着教材上的又重新写了一会,结果发现还是不行,后来请教班里学的比较还好的同学,发现我结构体定义的有问题,我年份用的是int类型,月、日用的是char类型,char类型只能接收一个字符,第二个就不能接收不了,所我的输入总有问题,后来我改成int类型的就没有这种情况了。后来又想边比较边压栈,弄了一段时间,后来由于时间关系就没实现,就借助数组实现的。也是一种遗憾。以后有时间写出来。

此次的课程设计,让我对栈有了更加深入的理解,因为结构体出错时写了好几遍,同时也感谢帮助我的老师和同学们,谢谢给我的帮助,才是顺利的完成此次课程设计。

【源程序】

5号,Times New Roman  字体

#include

#include

#define FALSE 0

#define TRUE  1

#define SIZE 3

#define NUM 100

//日期结构体定义

typedef struct Date

{

  int year;

  int month;

  int day;

} Date,*DATE;

//链栈结构体定义

typedef struct Node

{

  Date date;

  struct Node *next;

}linkstacknode,*linkstack;

//链栈初始化

void initstack(linkstack *S)

{

  *S=(linkstacknode*)malloc(sizeof(linkstacknode));

(*S)->next=NULL;

}

//链栈进栈

int push(linkstacknode *S,Date date)

{

   linkstacknode *temp;

   temp=( linkstacknode *)malloc(sizeof(linkstacknode));

   if(temp==NULL) return(FALSE);

   

temp->date.year=date.year;

temp->date.month=date.month;

temp->date.day=date.day;

temp->next=S->next;

S->next=temp;

      return (TRUE);

//链栈出栈

int Pop(linkstacknode *S,Date *date)

{

    linkstacknode *temp;

temp=S->next;

    if(temp==NULL)   return 0;

        S->next=temp->next;

        date->year=temp->date.year;

        date->month=temp->date.month;

        date->day=temp->date.day;

        free(temp);

        return 1;

}

//链栈输出

void show_Date_linkstacknode(linkstacknode *S)

{

    linkstacknode *p=NULL;

p=S->next;

    while(p!=NULL)

    {

        printf("%d:%d:%d:\\n",p->date.year,p->date.month,p->date.day);    

        p=p->next;

    }

}

//删除

void delet(linkstacknode *S,Date *date)

{

    int i=0,j=0,n=0;//temp0,temp1,temp2,

    int a[NUM]={0};

    int b[NUM]={0};

    int c[NUM]={0};

    Date *date0 = NULL;

    date0= (Date *)malloc(sizeof(Date));

    while(S->next!=NULL)//将栈中元素放在数组中

    {

        Pop(S,date);

        a[i]=date->year;

        b[i]=date->month;

c[i]=date->day;

        i++;    

    }

    //删除元素与栈中元素比较并覆盖删除

    for(j=0;j    {

        if(a[j]==date->year)

        {        

         if(b[j]==date->month)

         {

           if(c[j]==date->day)

           {

             for(;j            {

              a[j]=a[j+1];

              b[j]=b[j+1];

              c[j]=c[j+1];

            }

           }

         }

        }

    }

    //将排好的数组中元素压入到栈中

for(n=0;n    {

        S->date.year = a[n];

        S->date.month = b[n];

S->date.day = c[n];

        push(S,S->date);        

        //a[n]=S->date.year;

        //b[n]=S->date.month;

//c[n]=S->date.day;

// push(S,S->date);

    }

}

//排序压栈

void shuru(linkstacknode *S)

{

    int i=0,j=0,n=0,temp0,temp1,temp2;

    int a[NUM]={0};//日期—年 数组

    int b[NUM]={0};//日期—月 数组

    int c[NUM]={0};//日期—日 数组

    

    Date *date = NULL;

    date= (Date *)malloc(sizeof(Date));

    while(S->next!=NULL)//将栈中元素放在数组中

    {        

        Pop(S,date);

        a[i]=date->year;

        b[i]=date->month;

c[i]=date->day;        

        i++;    

    }

    //从大到小排序

for(j=0;j    {

        if(a[j]        {

            temp0=a[j+1];

            temp1=b[j+1];

            temp2=c[j+1];

            a[j+1]=a[j];

            b[j+1]=b[j];

            c[j+1]=c[j];

            a[j]=temp0;

            b[j]=temp1;

            c[j]=temp2;

        }

        else if(b[j]        {

            temp0=a[j+1];

            temp1=b[j+1];

            temp2=c[j+1];

            a[j+1]=a[j];

            b[j+1]=b[j];

            c[j+1]=c[j];

            a[j]=temp0;

            b[j]=temp1;

            c[j]=temp2;;

        }

        else if(c[j]        {

            temp0=a[j+1];

            temp1=b[j+1];

            temp2=c[j+1];

            a[j+1]=a[j];

            b[j+1]=b[j];

            c[j+1]=c[j];

            a[j]=temp0;

            b[j]=temp1;

            c[j]=temp2;

        }

    }

    //将排好的数组中元素压入到栈中

for(n=0;n    {

        S->date.year = a[n];

        S->date.month = b[n];

S->date.day = c[n];

        push(S,S->date);        

    }

}

void menu()

{    

    printf("*****************************************************\\n");

    printf("****************** 可 口 可 乐 **********************\\n");

    printf("*****************************************************\\n");

    printf("\\n");

    printf("*********** 日期(年月日)之间用空格隔开 ***************\\n");    

    printf("********** 一个日期(年月日)完成后按回车 **************\\n");    

    printf("\\n");

    printf("****************** 1:产品输入 **********************\\n");

    printf("***************** 2:产品输入 **********************\\n");

    printf("****************** 3:产品输出 **********************\\n");

    printf("****************** 4:退  出 ***********************\\n");

    printf("\\n");

}

void main()

{

    char i=0,flag=1,cloise=0;

    int m=0;

    linkstacknode *S=NULL;

    //*S=(linkstacknode*)malloc(sizeof(linkstacknode))

    Date *date = NULL;

    Date *date1 = NULL;

    initstack(&S);

    flushall();

    date= (Date *)malloc(sizeof(Date));

    date1= (Date *)malloc(sizeof(Date));

    while(flag)

    {

        menu();    

        printf("请输入选择项:\\n");

        scanf("%d",&cloise);        

        switch(cloise)

        {

            case 1:

                    printf("请安输入商品个数:\\n");

                    scanf("%d",&m);

                    printf("请输入日期(年月日):\\n");    

                    for(i=0;i                    {

                        scanf("%d%d%d",&date->year,&date->month,&date->day);

                        push(S,*date);

                    }

                break;

            case 2:

                    printf("请输入日期(年 月 日):\\n");

                    scanf("%d%d%d",&date1->year,&date1->month,&date1->day);

                    delet(S,date1);

                break;

            case 3:

                    printf("上货后的日期如下:\\n");

                    shuru(S);

                    show_Date_linkstacknode(S);

                break;

            case 4:

                    flag=0;

                break;

        }

    }

}

文档

洛阳理工学院数据结构课程设计

洛阳理工学院课程设计说明书课程名称数据结构设计课题商品货架管理专业计算机科学与技术班级B120503学号B120*****姓名王磊完成日期2014年6月14日课程设计任务书设计题目:商品货架管理_________________________________________________________设计内容与要求:小四号宋体,行间距固定值12磅每段缩进两个字符注:如果题目太长行间距可以缩小,总之,这一页不可以分成两页。商品货架管理设计内容:商品货架可以看成一个栈,栈顶商品的生产日期最早
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top