队列的链式实现

来源:互联网 发布:厄米特矩阵与对称矩阵 编辑:程序博客网 时间:2024/05/17 07:21
#include <stdio.h>#include <stdlib.h>//写个带头结点的//front并不是指向第一个元素,因为头结点均为空头结点struct Lqueue{    int data;    struct Lqueue* next;};struct queuerecord{    struct Lqueue* front;    struct Lqueue* rear;};struct queuerecord* CreateAndInit(struct queuerecord* queue){    queue=(struct queuerecord*)malloc(sizeof(struct queuerecord));    queue->front=(struct Lqueue*)malloc(sizeof(struct Lqueue));    queue->front->next=NULL;    queue->rear=queue->front;    return queue;}void Enqueue(struct queuerecord* queue,int number){    struct Lqueue *p;    p=(struct Lqueue* )malloc(sizeof(struct Lqueue));    p->data=number;    p->next=NULL;    p->next=queue->rear->next;    queue->rear->next=p;    queue->rear=p;}void Dequeue(struct queuerecord* queue){    struct Lqueue* temp;    temp=queue->front->next;    queue->front->next=temp->next;    free(temp);    return;}int main(){    struct queuerecord* queue;    queue=CreateAndInit(queue);    for(int i=1;i<=10;i++)      Enqueue(queue,i);    for(int i=1;i<=3;i++)      Dequeue(queue);    struct Lqueue* temp=queue->front->next;    while(temp){        printf("%d ",temp->data);        temp=temp->next;    }    return 0;}


#include <stdio.h>#include <stdlib.h>//写个不带头结点的struct Lqueue{    int data;    struct Lqueue* next;};struct queuerecord{    struct Lqueue* front;    struct Lqueue* rear;};struct queuerecord* CreateAndInit(struct queuerecord* queue){    queue=(struct queuerecord*)malloc(sizeof(struct queuerecord));    queue->front=NULL;    queue->rear=NULL;    return queue;}void Enqueue(struct queuerecord* queue,int number){    struct Lqueue *p;    p=(struct Lqueue* )malloc(sizeof(struct Lqueue));    p->data=number;    p->next=NULL;    if(queue->front==NULL){       queue->front=p;       queue->rear=p;       return;    }    p->next=queue->rear->next;    queue->rear->next=p;    queue->rear=p;}void Dequeue(struct queuerecord* queue){    struct Lqueue* temp;    temp=queue->front;    queue->front=temp->next;    if(queue->front==NULL)        queue->rear=NULL;    free(temp);    return;}int main(){    struct queuerecord* queue;    queue=CreateAndInit(queue);    for(int i=1;i<=10;i++)      Enqueue(queue,i);    for(int i=1;i<=3;i++)      Dequeue(queue);    struct Lqueue* temp=queue->front;    while(temp){        printf("%d ",temp->data);        temp=temp->next;    }    return 0;}


1 0
原创粉丝点击