21xrx.com
2024-06-03 04:46:28 Monday
登录
文章检索 我的文章 写文章
C++实现链式队列基本操作
2023-07-13 01:43:04 深夜i     --     --
C++ 链式队列 基本操作

链式队列是一种使用链表来实现的队列数据结构,相比于数组实现的队列,链式队列可以动态地增加和删除元素,更加灵活。

C++在实现链式队列基本操作时,需要定义一个队列的结构体,并实现入队、出队、队列长度和判空等基本操作。

首先,定义队列结构体。该结构体包含一个指向队头的指针front和一个指向队尾的指针rear,以及一个队列长度变量count。


struct QueueNode{

  int data;

  QueueNode* next;

};

struct Queue{

  QueueNode* front;

  QueueNode* rear;

  int count;

};

然后,实现入队操作。入队操作需要创建一个新的节点node,将数据添加到节点中,并将节点插入队列的尾部。如果队列为空,则同时更新front指针。


void EnQueue(Queue* queue, int val){

  QueueNode* node = new QueueNode();

  node->data = val;

  node->next = NULL;

  if(queue->rear == NULL)

    queue->front = node;

    queue->rear = node;

  

  else

    queue->rear->next = node;

    queue->rear = node;

  

  queue->count++;

}

接着,实现出队操作。出队操作需要保存队头节点的数据,将队头指向下一个节点,并删除原来的队头节点。如果队列为空,则返回-1(或抛出异常)。


int DeQueue(Queue* queue){

  if(queue->front == NULL)

    return -1;

  

  QueueNode* temp = queue->front;

  int val = temp->data;

  queue->front = temp->next;

  delete temp;

  queue->count--;

  if(queue->front == NULL)

    queue->rear = NULL;

  

  return val;

}

然后,实现队列长度和判空操作。队列长度就是队列中节点的个数,可以直接返回count变量的值。判空操作就是判断队列的front指针是否为空。


int QueueLength(Queue* queue)

  return queue->count;

bool IsEmpty(Queue* queue){

  return (queue->front == NULL);

}

使用以上代码实现的链式队列基本操作,可以方便地实现队列的增加、删除、查询、判断等功能,具有较好的灵活性和扩展性。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复