免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
论坛 程序设计 C/C++ 求助
最近访问板块 发新帖
查看: 998 | 回复: 1
打印 上一主题 下一主题

求助 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-11-29 14:46 |只看该作者 |倒序浏览
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<time.h>
#define stksize 5
typedef struct stkode
{
        int num;
        long tm;
}snode;
typedef struct stk
{
        snode *s;
        int top;
}stack;
typedef struct quenode
{
        int num;
        long tm;
        struct quenode *next;
}qnode;
typedef struct qu
{
        qnode *front;
        qnode *rear;
}queue;
void initstack(stack *st)
{
        st->s=(snode*)malloc(stksize*sizeof(snode));
        //if(!st->s) exit(OVERFLOW);
        st->top=-1;
}
int sfull(stack st)
{
        if(st.top==stksize-1) return 1;
        else return 0;
}
int sempty(stack st)
{
        if(st.top==-1) return 1;
        else return 0;
}
int push(stack st,snode e)
{
        st.top++;
        st.s[st.top].num=e.num;
        st.s[st.top].tm=e.tm;
        return 1;
}
int pop(stack *st,snode *e)
{
        e->num=st->s[st->top].num;
        e->tm=st->s[st->top].tm;
        st->top--;
        return 1;
}
void initqueue(queue *q)
{
        q->front=q->rear=(qnode*)malloc(sizeof(qnode));
        //if(!q->front) exit (OVERFLOW);
        q->front->next=NULL;
}
int qempty(queue q)
{
        if(q.front==q.rear) return 1;
        else return 0;
}
void ing(queue q,snode e)
{
        qnode *s;
        s->num=e.num;
        s->tm=e.tm;
        q.rear->next=s;
        s->next=NULL;
        q.rear=s;
}
void deq(queue *q,qnode *e)
{
        e->num=q->front->num;
        e->tm=q->front->tm;
        q->front=q->front->next;
}
int sfound(stack st,snode e)
{
        int i,cnt;
        cnt=st.top;
        for(i=cnt;i>=0;i--)
        {
                if(st.s.num==e.num)
                {
                        break;
                }
        }
        return i;
}
int qfound(queue q,qnode e)
{
        int i=0;
        qnode *a,*b;
        a=q.front;b=q.rear;
        while(a!=b)
        {
                if(a->num==e.num)
                {
                        i=1;
                        break;
                }
        }
        return i;
}
int main()
{
        stack s1,s2;
        snode e,e1;
        queue q;
        qnode q1;
        int num;
        double t1,t2;
        char ad;
    initstack(&s1);
    initqueue(&q);
        initstack(&s2);
        long biostime(int cmd,long newtime);
        while(1)
        {
                printf("enter A or D or E('E' is quit):");
                ad=getche();
                if(ad=='E') break;
                if(ad=='A')
                {
                        int a,b;
                        printf("enter num:");
                        scanf("%d",&num);
                        t1=biostime(0,0)/18.2;
                        e.num=num;
                        //e.tm=t1;
                        a=sfound(s1,e);b=qfound(q,q1);
                        if(a<0&&b==0)
                        {
                                if(sfull(s1)==0)
                                {
                                        push(s1,e);
                                        printf("num: %d is NO:%d in park\n",num,s1.top);
                                }
                                else
                                {
                                        ing(q,e);
                                        printf("num: %d is NO:%d int shortcut\n",num,q.rear-q.front);
                                }                               
                        }
                        else printf("The car is exist\n");
                }
                if(ad=='D')
                {
                        printf("enter num:");
                        scanf("%d",&num);
            e.num=num;
                        if(sfound(s1,e)<0)
                        {
                                printf("The car is not found\n");
                        }
                        else
                        {
                                 int i;
                                 i=sfound(s1,e);
                                 for(int j=s1.top;j>i;j--)
                                 {
                                         e1.num=s1.s[j].num;
                                         pop(&s1,&e1);
                                         push(s2,e1);
                                 }
                                 t2=biostime(0,0)/18.2;
                                 pop(&s1,&s1.s[s1.top]);
                                 for(int p=s2.top;p>=0;p--)
                                 {
                                         push(s1,s2.s[p]);
                                         pop(&s2,&s2.s[p]);
                                 }
                                 if(qempty(q)!=1)
                                 {
                                         e.num=q.front->num;
                                         q1.num=q.front->num;
                                         push(s1,e);
                                         deq(&q,&q1);
                                 }
                                 printf("The car %lf(s) and $%lf is needed\n",t2-t1,(t2-t1)*0.2);
                        }
                }
        }
        return 0;
}
       
这个序在biostime方面有点问题,我不知道怎么用?

论坛徽章:
0
2 [报告]
发表于 2009-11-29 19:05 |只看该作者
友情帮你顶下
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP