快乐大本营20090905,今日头条邮币卡,兴宁haobc.vip
队列是先进先出,和栈相反.
不循环的队列就是浪费空间,如果tail到了最大值后,即使前面出队了,有空的位置,也不能再入队。
seqqueue.h
#ifndef __SEQQUEUE__ #define __SEQQUEUE__ #include <stdio.h> #include <malloc.h> #include <assert.h> #include <memory.h> #include <stdbool.h> #define SEQQUEUE_INIT_SIZE 8 typedef int ElemType; typedef struct seqqueue{ ElemType* base; int front; int tail; }seqqueue; void init(seqqueue*); void enQueue(seqqueue*, ElemType); void show_list(seqqueue*); void deQueue(seqqueue*); void clear(seqqueue*); void destroy(seqqueue*); #endif
seqqueue.c
#include "seqqueue.h" void init(seqqueue* seq){ seq->base = (ElemType*)malloc(sizeof(ElemType) * SEQQUEUE_INIT_SIZE); seq->front = seq->tail = 0; } void enQueue(seqqueue* seq, ElemType x){ if(seq->tail == SEQQUEUE_INIT_SIZE -1){ printf("queue is full\n"); return; } seq->base[seq->tail++] = x; } void show_list(seqqueue* seq){ int i = seq->front; while(i <= seq->tail-1){ printf("%d\n", seq->base[i++]); } } void deQueue(seqqueue* seq){ if(seq->front < SEQQUEUE_INIT_SIZE - 1){ seq->front++; } } void clear(seqqueue* seq){ } void destroy(seqqueue* seq){ }
whilequeuemain.c
#include "seqqueue.h" int main(){ seqqueue list; init(&list); int select = 1; ElemType item; int index; while(select){ printf("*****************************************\n"); printf("*** [1] push [2] pop ***\n"); printf("*** [3] show_list [4] length ***\n"); printf("*** [5] clear [6] destroy ***\n"); printf("*** [0] quit ***\n"); printf("*****************************************\n"); printf("请选择:>"); scanf("%d", &select); if(0 == select) break; switch(select){ case 1: printf("请输入要插入的数据>\n"); scanf("%d",&item); enQueue(&list, item); show_list(&list); break; case 2: deQueue(&list); show_list(&list); break; case 3: show_list(&list); break; case 5: clear(&list); show_list(&list); break; case 6: destroy(&list); break; default: printf("输入的选择错误,请重新选择\n"); break; } } //destroy(&list); }
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
如何在没有core文件的情况下用dmesg+addr2line定位段错误
用QT制作3D点云显示器——QtDataVisualization
网友评论