栈与队列的C语言
2026/7/10 13:49:57 网站建设 项目流程
#include "stack.h" void create_link_stack(node_p *S) { *S=NULL; } //申请新节点 node_p creat_new_point(char data) { node_p new=(node_p)malloc(sizeof(node)); if(new==NULL) { printf("空间申请失败\n"); return NULL; } new->data=data; return new; } int empty(node_p S) { return S==NULL?1:0; } //入栈 void push_stack(node_p *S,char data) { if(S==NULL) { printf("入参为空\n"); return; } node_p new=creat_new_point(data); new->next=*S; *S=new; } //输出 void show(node_p S) { if(S==NULL) { printf("入参为空\n"); return; } if(empty(S)) { printf("栈为空\n"); return; } node_p p=S; while(p!=NULL) { printf("%c->",p->data); p=p->next; } putchar(10); } //出栈 void pop_stack() { if(S==NULL) { printf("入参为空\n"); return; } if(empty(S)) { printf("栈为空\n"); return; } }
#include "queue.h" queue* creat_q() { queue* Q=(queue*)malloc(sizeof(queue)); if(Q==NULL) { printf("申请空间失败\n"); return NULL; } Q->front=0; Q->rear=0; return Q; } //判空 int empty_queue(queue *Q) { if(Q==NULL) { printf("入参为空\n"); return -1; } return Q->front==Q->rear?1:0; } //判满 int full_queue(queue* Q) { if(Q==NULL) { printf("入参为空\n"); return -2; } return (Q->rear+1)%MAX==Q->front?1:0; } //入队 void push_queue(queue* Q,datatype data) { if(Q==NULL) { printf("入参为空\n"); return; } if(full_queue(Q)) { printf("队列已满\n"); return; } Q->data[Q->rear]=data; Q->rear=(Q->rear+1)%MAX; } //出队 void pop_queue(queue* Q) { if(Q==NULL) { printf("入参为空\n"); return; } if(empty_queue(Q)) { printf("队列为空\n"); return; } printf("%d\n",Q->data[Q->front]); Q->front=(Q->front+1)%MAX; } //销毁队列 void free_Q(queue **Q) { if(Q==NULL || *Q==NULL) { printf("入参为空\n"); return; } free(*Q); *Q=NULL; } //输出 void show(queue* Q) { if(Q==NULL) { printf("入参为空\n"); return; } if(empty_queue(Q)) { printf("队列为空\n"); return; } for(int i=Q->front;i!=Q->rear;i=(i+1)%MAX) { printf("%d ",Q->data[i]); } putchar(10); }

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询