入队/出队

入队/出队操作

#include<iostream>
using namespace std;
struct node
{
    int data;
    node *next;
};
struct queue
{
    node *head;
    node *rear;
};
//入队
queue *push_queue(queue *team,int x)
{
    node *s=new node;
    s->data=x;
    s->next=NULL;
    if(team->rear==NULL)
    {
        team->head=s;
        team->rear=s;
    }
    else
    {
        team->rear->next=s;
        team->rear=s;
    }
    return team;
}
//出队
queue *pop_queue(queue *team)
{
    int x;
    node *s=new node;
    if(team->head==NULL)
    {
        cout<<"empty"<<endl;
    }
    else
    {
        x=team->head->data;
        s=team->head;
        if(team->head==team->rear)
        {
            team->head=NULL;
            team->rear=NULL;
        }
        else
        {
            team->head=team->head->next;
            delete s;
        }
        cout<<x<<endl;
        return  team;
    }
}
int main()
{

    queue *H=new queue;
    H->rear=NULL;
    H->head=NULL;//建一个空队
    cout<<"Input the data pushed to queue"<<endl;
    int x;char c;
    queue *p;
    while(cin>>x)
    {
        p=push_queue(H,x);
        cin.get(c);
        if(c==‘\n‘)break;
    }
    while(p->rear!=NULL)
    {
        p=pop_queue(p);
    }
    return 0;
}
时间: 2024-10-12 16:31:02

入队/出队的相关文章

JQuery源码分析 --- 运动animate 入队出队

我们都知道,所谓的运动就是操作定时器,但是如果我同时写3个运动,比如下面这样,效果会怎样呢? <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> #div1{ width: 300px; height: 300px; background: red

编程实现队列的入队/出队操作

思路:队列其实也是一个链表,只是队列还有两个特殊的结点,一个指向队头,一个指向队尾.先设计数据结构,如下 typedef struct student * PNode; typedef struct linkqueue * Pqueue; typedef struct student { int data; PNode next; }Node; typedef struct linkqueue { PNode first; PNode rear; }queue; 1.入队操作其实是指向队尾的指针

循环队列的顺序存储和入队出队操作

今天看图的广度优先遍历的时候,发现用到了循环队列,补一下循环队列的知识,参考<大话数据结构>的P116~117,自己写了一个简单的测试例子便于理解. 首先需要理解以下三条公式. front是队头元素的下标,rear是队尾元素后一位的下标.(书上用头指针和尾指针,front和rear并不是指针,个人觉得不太好) 1.队列空的条件 显然front==rear 注意:如果队列不保留任何元素空间 满足front==rear的情况下,可能是队列空,也可能是队列满.所以为了方便,本文讨论的是采用保留一个元

【C++】容器适配器实现队列Queue的各种功能(入队、出队、判空、大小、访问所有元素等)

适配器: 将一个通用的容器转换为另外的容器,所谓的容器,指的是存放数据的器具,像我们知道的顺序表和链表都是容器Container.举个例子解释一下吧,我们的电压都是220v,而像充电线就起到转换到合适的电压的作用.而这里,我们的主角就是将通用的链表结构转换为来实现队列Queue这一数据结构,(意思就是,链表还可以去实现其他的数据结构). 在线性表中,分为链表和顺序表,我们知道其中的差别: 链表:节点灵活,使得插入删除元素方便灵活,但是对于单链表若有节点指针_head._tail,查找元素较为麻烦

队列的入队和出队操作

#include<iostream> #include<stdio.h> #include<string.h> #include<conio.h> using namespace std; typedef struct student{ int data; struct student *next; }node; typedef struct linkqueue { node *first, *rear; }queue; //队列的入队 queue *ins

链队列的初始化、入队、出队等操作实现

链队列的初始化.入队.出队等基本操作实现代码如下: #include<iostream> using namespace std; #define  TRUE 1 #define  FALSE 0 //链队列定义 typedef struct Node { int data;//数据域 struct Node *next;//指针域 }LinkQueueNode; typedef struct { LinkQueueNode *front;//队头指针front LinkQueueNode *

队列基本操作—出队与入队

#include<stdio.h> #include<stdlib.h> typedef struct QNode { //构造结点类型 int data; struct QNode *next; }*QueuePtr; typedef struct { QueuePtr front; QueuePtr rear; }LinkQueue; void CreateQueue(LinkQueue &Q);//创建队列 void EnQueue(LinkQueue &Q,

循环队列的初始化、入队、出队等基本操作

循环队列的初始化.入队.出队等基本操作,实现代码如下: #include<iostream> using namespace std; #define TRUE 1 #define FALSE 0 //循环队列的类型定义 #define MAXSIZE 50//队列的最大长度 typedef struct { int element[MAXSIZE];//队列的元素空间 int front;//头指针指示器 int rear;//尾指针指示器 }SeqQueue; //循环队列初始化 void

顺序结构循环队列的基本操作(一)(进队,出队)待优化

#include<stdio.h>#define ElemType int#include<malloc.h>#define MAXSIZE 10typedef struct{ ElemType *data; int front,rear;}Queue;typedef struct BitNode{ ElemType data; struct Bitree *Lchild,*Rchild;}BitNode;Queue Init_queue(Queue Q){ Q.data=(Ele