C语言顺序结构顺序队列

已知当前需要定义一个顺序队列结构对-组字符型数据(A、B、C、D、E、F、G)进行操作(假设当前定义的数据结构最多能存放100个数据)。自己定义函数,要求在主函数中实现以下功能:
A.调用初始化函数, 将顺序队列初始化为空;
B.调用入队函数, 对所有数据进行入队操作,并输出队列的各结点值;
C.调用入队函数,在最后个节点后插入一个值为x的结点,x的值从键盘输入,并输出队列的各结点值;
D.调用出队函数, 删除该队列的前三个结点,并输出队列的各结点值:
E.调用出队函数, 删除队列中的所有数据。
测试用例:
输入:
A B C D E F G#
H
输出:
A B C D E F G
A B C D E F G H
D E F G H

其结构体设计的代码可以表示为://结点定义

typedef struct node{
int data;

struct node *next;

}node;

//队列定义,队首指针和队尾指针

typedef struct queue{
node *front; //头指针

node *rear; //尾指针

}queue;

有关初始化,稍微复杂一点的是,我们对于初始化需要初始化两个类型,一个是初始化结点,一个是初始化队列,初始化队列稍微有些不同,那就是当初始化队列的时候,需要将头尾两个结点指向的内容统统制空,表示是一个空队列,两个创建的函数代码可以表示为://初始化结点

node *init_node(){
node n=(node)malloc(sizeof(node));

if(n==NULL){ //建立失败,退出

exit(0);

}

return n;

}

//初始化队列

queue *init_queue(){
queue q=(queue)malloc(sizeof(queue));

if(q==NULL){ //建立失败,退出

exit(0);

}

//头尾结点均赋值NULL

q->front=NULL;

q->rear=NULL;

return q;

}

  1. 判断队列是否为空

判断队列是否为空比较简单,直接就是判断队列头指针是否是空值即可(关联如何创建队列可更好理解),判断队列是否为空是比较常用的操作。

其代码可以表示为://队列判空

int empty(queue *q){
if(q->front==NULL){
return 1; //1--表示真,说明队列非空

}else{
return 0; //0--表示假,说明队列为空

}

}

或者直接利用返回值进行更简单的判断(两者效果完全一样)int empty(queue *q){
return q->front==NULL;

}9+