| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 350 人关注过本帖
标题:这个程序老有警告错误
只看楼主 加入收藏
fujian26
Rank: 1
等 级:新手上路
帖 子:131
专家分:0
注 册:2007-4-3
收藏
 问题点数:0 回复次数:0 
这个程序老有警告错误
/* Note:Your choice is C IDE */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#define STACKSIZE 5
/*-----------车辆数据结构定义-------------*/
typedef struct{
int BNo; /*//车辆编号*/
int type; /*//车辆类型*/
int arrivetime; /*//到达车场时间*/
int pushtime; /*//进入停车场时间*/
int departuretime; /*//离开车场时间*/
}BUSINF;
/*------------链队列结点结构定义-----------*/
typedef struct QNODE{
BUSINF elm;
struct QNODE *next;
}QNODE;
/*------------顺序栈结构定义----------------*/
struct SqStack{
BUSINF elm[STACKSIZE];
int top;
}stack;
/*-------------链队列结构定义---------------*/
struct LinkQueue{
QNODE *front;
QNODE *rear;
}Queue;
/*-----------车辆收费标准定义----------------*/
int pay[]={0,2,3,5};
/*-------------------------------------------*/
/* 判栈空函数 */
/* 参 数:struct SqStack stack--指定栈 */
/* 返回值:0--栈不空; 1--栈空 */
/*-------------------------------------------*/
int StackEmpty(struct SqStack stack)
{ if(stack.top==0) return 1;
else return 0;
}
/*-------------------------------------------*/
/* 判栈满函数 */
/* 参 数:struct SqStack stack--指定栈 */
/* 返回值:0--栈不满; 1--栈满 */
/*-------------------------------------------*/
int StackFull()
{ if(stack.top==STACKSIZE) return 1;
else return 0;
}
/*-------------------------------------------*/
/* 顺序栈入栈函数 */
/* 参 数:struct SqStack *stack--栈指针 */
/* BUSINF Bus--入栈车辆数据 */
/* 返回值:无 */
/*-------------------------------------------*/
void push(struct SqStack *stack,BUSINF Bus)
{ if(StackFull()==1) return;
else
{stack->elm[stack->top]=Bus;
stack->top++;
}
}
/*-------------------------------------------*/
/* 顺序栈出栈函数 */
/* 参 数:struct SqStack *stack--栈指针 */
/* BUSINF *Bus--返回车辆数据指针 */
/* 返回值:无 */
/*-------------------------------------------*/
void pop(struct SqStack *stack,BUSINF *Bus)
{ if(StackEmpty(*stack)) {printf("it's empty\n"); return;}
else
{stack->top--;
*Bus=stack->elm[stack->top];
}
}
/*-------------------------------------------*/
/* 链栈入栈函数 */
/* 参 数:QNODE *stack--栈指针 */
/* QNODE *p--入栈结点指针 */
/* 返回值:无 */
/*-------------------------------------------*/
void LPush(QNODE *stack,QNODE *p)
{ p->next=stack->next;
stack->next=p;
}
/*-------------------------------------------*/
/* 链栈出栈函数 */
/* 参 数:QNODE *stack--栈指针 */
/* QNODE **p--返回结点指针 */
/* 返回值:无 */
/*-------------------------------------------*/
void LPop(QNODE *stack,QNODE **p)
{ (*p)=stack->next;
stack->next=(*p)->next;
}
/*-------------------------------------------*/
/* 链队列初始化函数 */
/* 参 数:无 */
/* 返回值:无 */
/*-------------------------------------------*/
void InitQueue(void)
{ Queue.front=(QNODE *)malloc(sizeof(QNODE));
Queue.rear=Queue.front;
if(!Queue.front) {printf("duilie wei kong\n"); return;}
Queue.front->next=NULL;
}
/*-------------------------------------------*/
/* 判队列空函数 */
/* 参 数:无 */
/* 返回值:0--队列不空; 1--队列空 */
/*-------------------------------------------*/
int QueueEmpty(void)
{ if(Queue.front==Queue.rear) return 1;
else return 0;
}
/*-------------------------------------------*/
/* 入队操作函数 */
/* 参 数:BUSINF Businf--入队车辆数据 */
/* 返回值:无 */
/*-------------------------------------------*/
void EnQueue(BUSINF Businf)
{ QNODE *p;
p=(QNODE *)malloc(sizeof(QNODE));
if(!p) {printf("error\n"); return;}
p->elm=Businf;
p->next=NULL;
Queue.rear->next=p;
Queue.rear=p;
}
/*-------------------------------------------*/
/* 出队操作函数 */
/* 参 数:BUSINF *Businf--返回车辆数据指针 */
/* 返回值:无 */
/*-------------------------------------------*/
void DeQueue(BUSINF *BusInf)
{ QNODE *p;
p=(QNODE *)malloc(sizeof(QNODE));
if(!p) return;
if(QueueEmpty()) return;
p=Queue.front->next;
*BusInf=p->elm;
Queue.front->next=p->next;
if(Queue.rear==p) Queue.rear=Queue.front;
free(p);
}
/*-------------------------------------------*/
/* 栈数据查找函数 */
/* 参 数:int BusNo--待查找的车辆编号 */
/* 返回值:int:>=0--数据在栈中的位置 */
/* -1--查找失败 */
/*-------------------------------------------*/
int SearchStack(int BusNo)
{ int k;
k=stack.top-1;
while(k>=0&&BusNo!=stack.elm[k].BNo) k--;
return(k);
}
/*-------------------------------------------*/
/* 队列数据查找函数 */
/* 参 数:int BusNo--待查找的车辆编号 */
/* 返回值:队列结点指针:NULL--查找失败 */
/* 非空--查找成功,数据结点指针 */
/*-------------------------------------------*/
QNODE *SearchQueue(int BusNo)
{ QNODE *p;
p=Queue.front->next;
while(p!=NULL&&p->elm.BNo!=BusNo) p=p->next;
return(p);
}
/*-------------------------------------------*/
/* 收费计算与显示函数 */
/* 参 数:BUSINF BusInf--离开车辆的数据 */
/* 返回值:无 */
/*-------------------------------------------*/
void CalcultPay(BUSINF BusInf)
{ int payment;
if(BusInf.arrivetime!=0&&BusInf.pushtime==0)
payment=(BusInf.departuretime-BusInf.arrivetime)*pay[BusInf.type]/3.0;
else if(BusInf.arrivetime!=0&&BusInf.pushtime!=0)
payment=(BusInf.pushtime-BusInf.arrivetime)*pay[BusInf.type]/3.0+
(BusInf.departuretime-BusInf.pushtime)*pay[BusInf.type];
else payment=(BusInf.departuretime-BusInf.pushtime)*pay[BusInf.type];
printf(" **********************************\n");
printf(" * payment=%4d *\n",payment);
printf(" **********************************\n");
getch();
}
/*-------------------------------------------*/
/* 进场车辆数据录入与管理函数 */
/* 参 数:无 */
/* 返回值:无 */
/*-------------------------------------------*/
void InputArrialData()
{ int BusNo,arrivetime,BusType;
BUSINF arrive;

/*do
{*/printf("plese input the bus number\n");
scanf("%d",&BusNo);
printf("plese input the bus's arrivetime\n");
scanf("%d",&arrivetime);
printf("plese input the bustype\n");
scanf("%d",&BusType);
arrive.BNo=BusNo;
arrive.arrivetime=arrivetime;
arrive.type=BusType;
arrive.pushtime=0;
/* }while(BusNo>0&&arrivetime>0&&BusType>0&&(BusType<3||BusType==3));*/
if(SearchStack(BusNo)==-1&&!SearchQueue(BusNo))
{if(StackFull()==0)
push(&stack,arrive);
else
EnQueue(arrive);
}

}
/*-------------------------------------------*/
/* 离场车辆数据录入与管理函数 */
/* 参 数:无 */
/* 返回值:无 */
/*-------------------------------------------*/
void InputDepartData()
{ int BusNo,departtime;
BUSINF depart,temp;
QNODE *p,*q;
QNODE *LStack;
struct SqStack TempStack;
TempStack.top=0;
/*do
{*/printf("please input the BusNo\n");
scanf("%d",&BusNo);
printf("please input the departtime\n");
scanf("%d",&departtime);
depart.BNo=BusNo;
depart.departuretime=departtime;
/* }while(BusNo>0&&departtime>0);*/
depart.pushtime=0;
if(SearchStack(BusNo)>0||SearchStack(BusNo)==0)
{do
{pop(&stack,&temp);
if(temp.BNo==BusNo) break;
push(&TempStack,temp);
}while(1);
depart.arrivetime=temp.arrivetime;
depart.type=temp.type;
CalcultPay(depart);
while(1)
{if(TempStack.top==0) break;
pop(&TempStack,&temp);
push(&stack,temp);
}

if(QueueEmpty()==0)
{ DeQueue(&temp);
push(&stack,temp);
}
return;
}
if(SearchQueue(BusNo))
{do
{DeQueue(&temp);
if(temp.BNo==BusNo) break;
p->elm=temp;
LPush(LStack,p);
}while(1);
depart.arrivetime=temp.arrivetime;
depart.type=temp.type;
CalcultPay(depart);
while(LStack)
{ LPop(LStack,&q);
temp=q->elm;
EnQueue(temp);
}
}
}
/*-------------------------------------------*/
/* 列表显示车场车辆数据函数 */
/* 参 数:无 */
/* 返回值:无 */
/*-------------------------------------------*/
void OutputBusData(void)
{ int i;
QNODE *p;
printf("\n stop:\n");
printf(" CarNo Arriave Push bustype\n");
printf("stack top=%d\n",stack.top);
getch();
for(i=0;i<stack.top;i++)
printf("%8d%8d%10d%7d\n",stack.elm[i].BNo,stack.elm[i].arrivetime,
stack.elm[i].pushtime,stack.elm[i].type);
if(Queue.front->next)
{ printf("\n path:\n");
p=Queue.front->next;
while(p)
{ printf(" %d %d\n",p->elm.BNo,p->elm.arrivetime);
p=p->next;
}
}
}
/*-------------------------------------------*/
/* 撤销队列函数 */
/* 参 数:无 */
/* 返回值:无 */
/*-------------------------------------------*/
void DestroyQue()
{ QNODE *p,*q;
p=Queue.front;
while(p)
{ q=p;
p=p->next;
free(q);
}
}
/*-------------------------------------------*/
/* 菜单选择函数 */
/* 参 数:无 */
/* 返回值:int:取值1--3 */
/*-------------------------------------------*/
int nemu()
{
char m;
printf("\n ************* BUS Manage **************\n");
printf(" *%15c1---Arrival%12c\n",' ','*');
printf(" *%15c2---Departure%10c\n",' ','*');
printf(" *%15c3---End%16c\n",' ','*');
printf(" ***************************************\n");
printf("%15cSelcet 1,2,3: ",' ');
do{
m=getch();
}while(m<'1' || m>'3');
printf("\n");
return(m-48);
}
void main()
{ stack.top=0;
InitQueue();
while(1)
{
switch(nemu())
{
case 1:
InputArrialData();
OutputBusData();
break;
case 2:
InputDepartData();
OutputBusData();
break;
case 3:
OutputBusData();
DestroyQue();
return;
}
}
}

老是说InputDepartData()函数中的p和LStack在定义前使用了它,还有指针转换后指向其他类型

谁能帮我改一改

搜索更多相关主题的帖子: int include 车场 定义 
2007-11-16 15:51
快速回复:这个程序老有警告错误
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015037 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved