定义一个栈
typedef struct student{
int data;
struct student *next;
}node;
typedef struct stackqueue{
node *zhandi,*top;
};
定义入栈:
queue *push(queue *HQ,int x){
node *s,*p;
s=(node*)malloc(sizeof(node));
s->data=x;
s->next=NULL;
//如果是空栈,则顶底都是s
if(HQ->zhandi==NULL){
HQ->zhandi=s;
HQ->top=s;
}else{
//不是空栈,先将栈顶的下一个指针指向s
//再将s定义为栈顶
HQ->top->next=s;
HQ->top=s;
}
return HQ;
}
定义出栈:
queue *pop(queue *HQ){
node *p;int x;
if(HQ->zhandi==NULL){
cout<<"已经没有元素"<<endl;
}else{
x=HQ->zhandi->data;
p=HQ->zhandi;
if(HQ->zhandi==HQ->top){
HQ->zhandi=NULL;
HQ->top==NULL;
}else{
while(p->next!=HQ->top){
p=p->next;
}
HQ->top=p;
HQ->top->next=NULL;
}
return HQ;
}
}
结束