【数据结构】队列的链表实现

迷南。 2022-09-30 04:59 217阅读 0赞

Talk is cheap, show you the code.

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. typedef struct node{
  4. int date;
  5. struct node * Next;
  6. } Node;
  7. typedef struct queue{
  8. Node * front;
  9. Node * rear;
  10. }* LinkQueue;
  11. LinkQueue CreateQueue()
  12. {
  13. LinkQueue Queue;
  14. Queue = (LinkQueue)malloc(sizeof(struct queue));
  15. Queue->front = Queue->rear = NULL; //初始队列中没有元素,所以首尾指针都置空
  16. return Queue;
  17. }
  18. void AddQ(LinkQueue Queue, int x)
  19. {
  20. Node *AddNode;
  21. AddNode = (Node*)malloc(sizeof(Node));
  22. AddNode->date = x;
  23. AddNode->Next = NULL;
  24. if(!Queue->rear) //判断队列是否为空,若为空首尾指针都指向新节点
  25. Queue->front = Queue->rear = AddNode;
  26. else //若队列不为空,则向尾部添加新节点
  27. Queue->rear = Queue->rear->Next = AddNode;
  28. }
  29. int DeleteQ(LinkQueue Queue)
  30. {
  31. int t;
  32. Node *Temp;
  33. if(!Queue->front){
  34. printf("队列已空\n");
  35. return;
  36. }
  37. else{
  38. Temp = Queue->front;
  39. Queue->front = Temp->Next;
  40. t = Temp->date;
  41. free(Temp);
  42. }
  43. if(!Queue->front) //检查删除操作后队列是否为空,若为空,则将首尾指针同时置空
  44. Queue->rear = NULL;
  45. return t;
  46. }

发表评论

表情:
评论列表 (有 0 条评论,217人围观)

还没有评论,来说两句吧...

相关阅读