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

来源:互联网 发布:淘宝开个网店怎么经营 编辑:程序博客网 时间:2024/04/23 22:24
#include <tchar.h>#include <iostream>using namespace std;typedef struct student{int data;struct student * next; } node;typedef struct linkmyqueue{node *first;node *rear;} myqueue;node* create(){node *head, *p, *s;int x, cycle = 1;head = (node *)malloc(sizeof(node));p = head;while(cycle){cout << "please input the data: ";cin >> x;cout << endl;if( x != 0){s = (node *)malloc(sizeof(node));s->data = x;p->next = s;p = s;}else{cycle = 0;}}p->next = NULL;head = head->next;return head;}int length(node *head){int n = 0;node *p;p = head;while (p != NULL){p = p->next;n++;}return n;}void print(node *head){int n;node *p;p = head;n = length(head);cout << "There is " << n << " data in list\n" << endl;while(p != NULL){cout << p->data << " -> ";p = p->next;}cout << endl;}node *last(node *head){node *p;p = head;while(p->next != NULL)p = p->next;return p;}//队列的入队myqueue *insert(myqueue *HQ,int x){    node *s;    s=(node *)malloc(sizeof(node));    s->data=x;    s->next=NULL;    if(HQ->rear==NULL)    {        HQ->first=s;        HQ->rear=s;    }    else    {        HQ->rear->next=s;        HQ->rear=s;    }    return (HQ);} //队列的出队myqueue *remove(myqueue *HQ){    node *p;    if(HQ->first==NULL)        printf("\n yichu");    else    {        p=HQ->first;        if(HQ->first==HQ->rear)        {            HQ->first=NULL;            HQ->rear=NULL;free(p);        }        else        {            HQ->first=HQ->first->next;            free(p);        }        return (HQ);    }}int _tmain(int argc, _TCHAR * argv[]){node *head, *end;myqueue *LQ;head = create();end = last(head);//获取尾节点指针print(head);LQ = (myqueue *)malloc(sizeof(myqueue));//给队列分配内存空间    LQ->first = head;LQ->rear = end;for (int i=1; i<=4; i++){LQ = insert(LQ, i);}print(head);for (i=1; i<=8; i++){LQ = remove(LQ);}print(LQ->first);return 0;}

原创粉丝点击