栈与队列的C语言

栈与队列的C语言
#include stack.h void create_link_stack(node_p *S) { *SNULL; } //申请新节点 node_p creat_new_point(char data) { node_p new(node_p)malloc(sizeof(node)); if(newNULL) { printf(空间申请失败\n); return NULL; } new-datadata; return new; } int empty(node_p S) { return SNULL?1:0; } //入栈 void push_stack(node_p *S,char data) { if(SNULL) { printf(入参为空\n); return; } node_p newcreat_new_point(data); new-next*S; *Snew; } //输出 void show(node_p S) { if(SNULL) { printf(入参为空\n); return; } if(empty(S)) { printf(栈为空\n); return; } node_p pS; while(p!NULL) { printf(%c-,p-data); pp-next; } putchar(10); } //出栈 void pop_stack() { if(SNULL) { printf(入参为空\n); return; } if(empty(S)) { printf(栈为空\n); return; } }#include queue.h queue* creat_q() { queue* Q(queue*)malloc(sizeof(queue)); if(QNULL) { printf(申请空间失败\n); return NULL; } Q-front0; Q-rear0; return Q; } //判空 int empty_queue(queue *Q) { if(QNULL) { printf(入参为空\n); return -1; } return Q-frontQ-rear?1:0; } //判满 int full_queue(queue* Q) { if(QNULL) { printf(入参为空\n); return -2; } return (Q-rear1)%MAXQ-front?1:0; } //入队 void push_queue(queue* Q,datatype data) { if(QNULL) { printf(入参为空\n); return; } if(full_queue(Q)) { printf(队列已满\n); return; } Q-data[Q-rear]data; Q-rear(Q-rear1)%MAX; } //出队 void pop_queue(queue* Q) { if(QNULL) { printf(入参为空\n); return; } if(empty_queue(Q)) { printf(队列为空\n); return; } printf(%d\n,Q-data[Q-front]); Q-front(Q-front1)%MAX; } //销毁队列 void free_Q(queue **Q) { if(QNULL || *QNULL) { printf(入参为空\n); return; } free(*Q); *QNULL; } //输出 void show(queue* Q) { if(QNULL) { printf(入参为空\n); return; } if(empty_queue(Q)) { printf(队列为空\n); return; } for(int iQ-front;i!Q-rear;i(i1)%MAX) { printf(%d ,Q-data[i]); } putchar(10); }