链队列基本操作实现(C语言)


@TOC

队列

#链队的定义及其基本操作
#1、队列的定义
#队列,简称队,它是一种操作受限的线性表,其限制在表的一端进行插入,另一端进行删除。可进行插入的一端称为队尾(rear),可进行删除的一端称为队头#(front)。向队中插入元素叫入队,新元素进入之后就称为新的队尾元素。从队中删除元素叫出队,元素出队后,其后继结点元素就称为新的队头元素。
#2、队列的特点
#队的特点就是先进先出(栈为先进后出)。打个比方,队列就是在食堂吃饭的时候排队,先到的人先拿到饭,后到的人后拿到。
#3、队列的存储结构
#队列按存储结构可分为链队和顺序队两种。
#代码:
#include<stdio.h>
#include<stdlib.h>

typedef int QueueElemType;

typedef struct Node
{
    QueueElemType data;
    struct Node *next;
}LQNode;

typedef struct {
LQNode *front;
LQNode *near;
}LinkQueue;

void EnterQueue(LinkQueue *Q,int x)//入队
{
    LQNode *NewNode;
    NewNode=(LQNode*)malloc(sizeof(LQNode));
    if(NewNode!=NULL)
    {
        NewNode->data=x;
        NewNode->next=NULL;
        Q->near->next=NewNode;
        Q->near=NewNode;
    }
}

void DeleteQueue(LinkQueue *Q,int *x)//出队,并用x返回
{
    LQNode *p;
    if(Q->near==Q->front)
        return;
    p=Q->front->next;
    Q->front->next=p->next;
    if(Q->near=p)  //若只有一个元素
    {
        Q->front=Q->near;
    }
    *x=p->data;
    free(p);
    return ;
}

void InitQueue(LinkQueue *Q)//队列初始化
{
     Q->front=(LQNode*)malloc(sizeof(LQNode));
printf("d");
    Q->near=Q->front;
    Q->front->next=NULL;
}
int main()
{
    LinkQueue *Q;              //队列初始化

   InitQueue(Q);

    EnterQueue(Q,1);

     EnterQueue(Q,2);
      EnterQueue(Q,3);
       EnterQueue(Q,4);
       int x;
       DeleteQueue(Q,&x);
       printf("%d",x);
       return 0;
}


点赞
  1. mcl19909949541说道:
    Google Chrome Windows 10

    hello

发表评论

昵称和uid可以选填一个,填邮箱必填(留言回复后将会发邮件给你)
tips:输入uid可以快速获得你的昵称和头像