学习队列需要熟练掌握指针
1。队列的组成结构:
有两部分:表示队列 的结构体(一条队列只有一个)、表示结点的结构体(表示队列的成员,可以有多个)。
一条队列由一个结构体表示,这个结构体里有两个成员,都是指针:一个指向队列的头结点,一个指向队列的尾结点。这两个指针都是指向结点的,下面讲到的那种结点。
队列由很多结点组成,就像排队中的每个人,结点由另外一种结构体表示,里面也有两个东西:一个用来存储数据,叫数据域,一个是指针用来指向下一个结构体,叫指针域。事实这些结点就是一条单向链表。
队头就是单向链表头,队尾就是单向链表尾。队列的功能就是为了让单向链表在链表头添加成员,在链表尾删除成员。
2。队列的初始化:
先建立表示队列的结构体,让头尾两个指针都指向同一个结点。然后让尾结点的next指针指向NULL,尾结点始终都是指向NULL的,即使后面添加了队列成员。
3。入队步骤:
让尾结点的next指针指向新结点;
让新结点变成尾结点;
使尾结点的next指针指向NULL。
4。出队步骤:
新建一个结点指针s;
把队头赋给s;
使队头指向下一个结点;
用free删除s所指向的结点空间。
注: 使用malloc申请内存空间时,需要用free显式释放内存,否则该内存在程序退出后依然不可用,所谓内存泄露。