链表队列
链表队列是受到限制的单向链表,采用链式存储结构,符合队列先进先出逻辑。
构造链式队列
使用一个结构体来构造一个链表队列,其中成员num用于存储数据,*next使用指向下一个节点。
typedef struct list_queue
{
int num ;
struct list_queue * next ;
}Queue;
插入数据
Queue *add_queue(Queue *head, Queue *new)
{
Queue *tmp = head;
if (head == NULL)
{
tmp = new;
return tmp;
}
while(tmp->next != NULL)
{
tmp = tmp->next;
}
tmp->next = new;
return head;
}
注意:
参数head和new的初始值为NULL。
读取数据
Queue *ex_queue(Queue *head, Queue *ex)
{
if (head == NULL)
{
printf("The current queue is empty!!
");
return NULL;
}
Queue *tmp = head;
head = tmp->next;
tmp->next = NULL;
(*ex).next = tmp->next;
(*ex).num = tmp->num
return head;
}
测试程序
int main(int argc, char const *argv[])
{
Queue *head = NULL;
//入队
Queue *new = NULL;
for (int i = 0; i < 10; i++)
{
new = new_node(i);
printf("num:%d
", new->num);
head = add_queue(head, new);
}
printf("-----------------------------------------
");
//出队
Queue ex_data;
for (int i = 0; i < 10; i++)
{
head = ex_queue(head, &ex_data);
printf("data:%d
", ex_data.num);
}
return 0;
}