赞
踩
- #include <iostream>
- #include <cstdlib>
- using namespace std;
- const int MAXSIZE=105;
- typedef struct Queue
- {
- int data[MAXSIZE];
- int front,rear;
- }SqQueue;
-
- int Push(SqQueue *Q,int e)
- {
- if((Q->rear+1)%MAXSIZE==Q->front)
- return 0;
- Q->data[Q->rear]=e;
- Q->rear=(Q->rear+1)%MAXSIZE;
- return 1;
- }
- int Pop(SqQueue *Q)
- {
- if(Q->front == Q->rear)
- return 0;
- cout<<Q->data[Q->front]<<endl;
- Q->front=(Q->front+1)%MAXSIZE;
- return 1;
- }
- int main()
- {
- int n,e;
- cin>>n;
- SqQueue *Q=(Queue*)malloc(sizeof(Queue));//必须开辟空间
- Q->front=0;
- Q->rear=0;
- for(int i=0;i<n;i++)
- {
- cin>>e;
- Push(Q,e);
- }
- for(int i=0;i<n;i++)
- Pop(Q);
- return 0;
- }
- #include <iostream>
- #include <cstdio>
- #include <cstdlib>
- using namespace std;
- typedef struct QNode
- {
- int data;
- struct QNode *next;
- } QNode,*QueuePtr;
-
- typedef struct LinkQueue
- {
- QueuePtr front,rear;
- } LinkQueue;
-
- //入队
- void Push(LinkQueue *Q,int e)
- {
- QueuePtr q=(QueuePtr)malloc(sizeof(QNode));
- q->data=e;
- q->next=NULL;
- Q->rear->next=q;
- Q->rear=q;
- return ;
- }
- //出队
- int Pop(LinkQueue *Q)
- {
- QueuePtr p;
- if(Q->rear==Q->front)
- return 0;
- p=Q->front->next;//将准备删除的节点付给p
- cout<<p->data<<endl;
- Q->front->next=p->next;//指向删除节点的下一个节点
- if(p==Q->rear)//若队头是队尾
- Q->rear=Q->front;
- free(p);
- return 1;
- }
- void print_Queue(LinkQueue *q)
- {
- if(q->front == q->rear)
- return;
- QueuePtr temp = q->front->next;
- while(temp != q->rear)
- {
- printf("%d ", temp->data);
- temp = temp->next;
- }
- printf("%d", temp->data);
- printf("\n");
- }
- void init_Queue(LinkQueue *q)//初始化操作,定义一个头结点
- {
- q->front = q->rear = (QNode *)malloc(sizeof(QNode));
- q->front->next = NULL;
- }
- int main()
- {
- int x,n;
- cin>>n;
- LinkQueue *Q=(LinkQueue *)malloc(sizeof(LinkQueue));
- init_Queue(Q);
- for(int i=0; i<n; ++i)
- {
- cin>>x;
- Push(Q,x);
- }
- print_Queue(Q);
- while(n--)
- Pop(Q);
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。