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

来源:互联网 发布:淘宝我订购的应用 编辑:程序博客网 时间:2024/04/26 23:08
// DataStructure.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"typedef struct Student{int data;Student *next;}Node;typedef struct{Node *head;Node *tail;}Queue;Queue * create(int *data,int length){if (data==NULL||length<=0){return NULL;}Queue *queue=new Queue();queue->head=NULL;queue->tail=NULL;for (int i = 0; i < length; i++){Node *node=new Node();node->data=data[i];node->next=NULL;if (queue->head==NULL){queue->head=node;}else{queue->tail->next=node;}queue->tail=node;}return queue;}Node *dequeue(Queue *queue){if (queue==NULL||queue->head==NULL){return NULL;}Node **head=&(queue->head);Node *p=NULL;if (*head!=NULL){p=*head;*head=(*head)->next;//只有一个元素if (*head==NULL){queue->tail=NULL;}}return p;}void enqueue(Queue **queue,int value){if (queue==NULL){return ;}Node *node=new Node();node->data=value;node->next=NULL;if ((*queue)->tail!=NULL){(*queue)->tail->next=node;}else{(*queue)->head=node;}(*queue)->tail=node;}void print(Queue *queue){if (queue==NULL){return;}Node *p=queue->head;while (p!=NULL){printf("%d\t",p->data);p=p->next;}printf("\n");}int _tmain(int argc, _TCHAR* argv[]){int data[]={1,2,3,4,5};Queue *queue=new Queue();enqueue(&queue,1);dequeue(queue);dequeue(queue);enqueue(&queue,2);enqueue(&queue,3);print(queue);return 0;}

0 0
原创粉丝点击