今天终于是把队列的基本操作学完了,队列和栈其实大同小异,队列遵循的是先进先出原则,而栈遵循的是先进后出原则,形象的来说,栈是一个杯子,而队列是一个水管,谁先进队自然就会先流出来。
1.队列创建以及初始化
这次还是用链表来实现,与栈不同的是,由于队列是一个两头都开口的结构,入队和出队分别在两个不同的方向进行,因此不仅需要头指针(head)还需要一个尾指针(tail)。
typedef struct NODE{
int data;
struct NODE*next;
}NODE,*LINK_NODE;//创建节点
typedef struct QUENE
{
LINK_NODE head,tail;//队列首尾
int size;//队列大小
}QUENE;
然后是初始化了,但是我自我觉得对节点的初始化好像一直没有什么用......
LINK_NODE initNODE(){
LINK_NODE newnode=(LINK_NODE)malloc(sizeof(NODE));
newnode->data=0;
newnode->next=NULL;
return newnode;
}//节点初始化
void initquene(QUENE* quene){
quene->head=NULL;
quene->size=0;//长度没有
quene->tail=NULL;//头尾指针为空
}//队列的初始化
2.队列的插入(入队)以及删除(出队)
其实对于链表,栈,队列而言,感觉这两个操作都是最核心的操作,因为这涉及一些指针的转换,顺序的问题,自我感觉在