#include <stdio.h>
#include <stdlib.h>
struct Node{ //结构体节点 节点中包含值和下一个节点的内存地址,默认为空
int value;
struct Node *next;
};
struct queue{ //结构体队列 队列中包含头节点和末节点内存地址
struct Node *start;
struct Node *end;
};
void append(struct queue *a,int val) //在队列尾部增加节点
{
struct Node *ne;
ne=(struct Node *)calloc(1,sizeof(struct Node)); //动态分配内存空间
ne->value=val;
ne->next=NULL;
printf("加入 ->> %d\n",val);
if(a->start==NULL){
a->end=ne;
a->start=ne;
}
else{
a->end->next=ne;
a->end=ne;
}
}
void show(struct queue *a){ //输出当前队列的值
struct Node *ab;
ab=(struct Node *)calloc(1,sizeof(struct Node));
ab=a->start;
printf("------ show()分界线 ------\n");
while(1){
if(ab!=NULL){ //循环至节点的next指向为空
printf("%d\n",ab->value);
ab=ab->next;
}
else{
break;
}
}
return;
}
void pop(struct queue *a){ //修改队列start节点到下一节点
printf("弹出 ->> %d\n",a->start->value);
a->start=a->start->next;
}
int main(){
struct queue sam; //新建队列
sam.start=NULL;
sam.end=NULL;
append(&sam,1);
append(&sam,2);
append(&sam,4);
show(&sam);
append(&sam,3);
show(&sam);
pop(&sam);
pop(&sam);
show(&sam);
}