一段关于指针的有关问题,高手看一下。弄不明白,先上课去了。

一段关于指针的问题,高手看一下。弄不明白,先上课去了。。。
我只截取了其中的几个段,具体内容如下:
typedef   struct{//车辆信息&车站结点
int   num,reach,leave;//依次为车牌号、到达&离开时间
}Car;
typedef   struct{//模拟车站
Car   *base,*top;//基址指针&栈顶指针
int   Length;//现有车辆数
}SqStack;
void   InitStack(SqStack   *S){//车站初始化&生成车站(临时站)
S-> base=(Car   *)malloc((n+1)*sizeof(Car));//分配空间
S-> top=S-> base;//栈顶指针初始化
S-> Length=0;//现有车辆数,先清零
}//InitStack
Car   *s,x;QNode   *e;

while(S-> Length){//找车
s=&(S-> top--);S-> Length--;//大S是我定义的一个栈,top为栈顶指针。也就是这一行错误,请各位大侠指教。
if((*j-s-> num)==0)   break;
*(++T-> top)=*s;T-> Length++;
}//while


------解决方案--------------------
q=(QNode *)malloc(sizeof(QNode));//这样只给data next有空间,各4个,data-> num又没有空间
q-> data-> num=*j;q-> next=NULL;//赋值
Q-> front-> next=q;Q-> rear=q;//置位
------解决方案--------------------
稍微改了下

q-> data-> num=*j;q-> next=NULL;//赋值
Q-> front-> next=q;Q-> rear=q;//置位

改成
if(Q-> front==NULL)
Q-> front=q;
else Q-> front-> next=q;
Q-> rear=q;//