小爷公子呆丶 2017-12-03 14:31 采纳率: 0%
浏览 895

变量声明,结构体定义

#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<i;j++){
a[j]=a[j+1];
b[j]=b[j+1];
c[j]=c[j+1];
}
}
}
}

//将排好的数组中元素压入到栈中
    for(n=0;n<i;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,a[NUM]={0},b[NUM]={0},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<i;j++){   
            if(a[j]<a[j+1]){ //将年从大到小排序
                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]<b[j+1]){ //将月从大到小排序
                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]<c[j+1]){ //将日从大到小排序
                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<i;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");

    show_Date_linkstacknode(S);
    break; 
    case 4:
    flag=0;
    break;
    }
}

}

E:\程序\1.c(105) : error C2143: syntax error : missing ';' before 'type'
E:\程序\1.c(110) : error C2275: 'Date' : illegal use of this type as an expression
E:\程序\1.c(13) : see declaration of 'Date'
Error executing cl.exe.

课程设计的题目,改了好久了,本来好几个missing ';' before 'type',都定义在一个int里了....

  • 写回答

1条回答 默认 最新

  • devmiao 2017-12-03 16:53
    关注

    代码写了那么多才发现不对?早干嘛了。

    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题