定义一个栈
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; } }
结束