回 帖 发 新 帖 刷新版面

主题:停车场问题~

#include<stdio.h>
typedef struct 
{
   int num[10];
   int entertime[10];
   int top;
}seqstack;
void initstack(seqstack *s)
{
    s->top=0;
}
void push(seqstack *s,int x,int y)
{
   s->num [s->top ]=x;
   s->entertime[s->top ]=y;
   s->top++;
}
void pop(seqstack *s,int *x,int *y)
{
  s->top--;
  *x=s->num[s->top];
  *y=s->entertime[s->top];
}
int stackempty(seqstack s)
{
  if(s.top==0) return 1;
  else return 0;
}
main()
{
 seqstack *s1,*s2;
 int num,time;
 initstack(s1);
 initstack(s2);
 push(s1,1,0);
 push(s1,2,3);
 push(s1,3,6);
 push(s1,4,9);
 push(s1,5,12);
 while(!stackempty (*s1))
 {
   pop(s1,&num,&time);
   push(s2,num,time);
   printf("number=%d,time=%d:\n",num,time);
 }

 
}

我们老师写的停车厂中的栈函数部分
很多地方看不懂
结构体和出栈,进栈  谁能给解释以下~~
void pop(seqstack *s,int *x,int *y)

typedef struct 
{
   int num[10];
   int entertime[10];
   int top;
}seqstack;


void push(seqstack *s,int x,int y)

回复列表 (共1个回复)

沙发

把栈当成一个数组看就很简单了,其中top是数组下标,..
进栈Push(),即数组初始化,每输入一个数组元素,下标加1,为输入下一个数组元素做准备.
出栈Pop(),即输出数组,因为栈是:后进先出,LIFO,即把下标最大的首先输出,..因为top++时,比数组
最大下标大1,首先top--,获得最大下标,然后return in[top];

我来回复

您尚未登录,请登录后再回复。点此登录或注册