为啥我写的就是bug不断,,,,,打击啊,,,
https://blog.csdn.net/Timsley/article/details/53395023
#include <iostream>
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
/*
*
*typedef int ElemType;
*typedef struct Que {
* ElemType data;
* Que* next;
*}Que;
*
*typedef struct {
* Que* front,rear;
*}QueLinkptr;
*
*
*Que* createNode()
*{
* Que* temp=(Que*)malloc(sizeof(Que));
* //temp->data=mdata;
* temp->next=NULL;
* return temp;
*}
*
*Que* Enque(Que* rear,ElemType mdata)
*{
* Que* temp=createNode();
* temp->data=mdata;
* rear->next=temp;
* rear=temp;
*}
*
*int main()
*{
* Que* temp=createNode();
* temp->data=0;
*
* QueLinkptr* Node;
* //={temp,temp};
* Node->front=temp;
* Node->rear=temp;
* Enque(Node->rear,1);
*
*
*}
*/
/别人的,难受,为什么我的写的就是不行,打击啊
typedef int QElemType;
typedef struct QNode /*结点结构*/
{
QElemType data;
struct QNode *next;
}QNode,*QueuePtr;
typedef struct /*队列的链表结构*/
{
QueuePtr front, rear; /*队头、队尾指针*/
} LinkQueue;
#define OK 1
#define ERROR 0
typedef int Status;
/*插入元素e为Q的新的队尾元素*/
Status EnQueue(LinkQueue *Q, QElemType e)
{
QueuePtr s = (QueuePtr)malloc(sizeof(QNode));
s->data = e;
s->next = NULL;
Q->rear->next = s; /*把拥有元素e新节点s赋值给原队尾结点的后继*/
Q->rear = s; /*把s设置为队尾结点,rear指向s*/
return OK;
}
/*若队列不为空,删除Q的队头元素,用e返回其值*/
Status DeQueue(LinkQueue *Q, QElemType *e)
{
QueuePtr p;
if (Q->front == Q->rear)
{
return ERROR;
}
p = Q->front->next; /*将欲删除的队头节点暂存给p*/
*e = p->data;
Q->front->next = p->next; /*将原队头结点后继赋值给头结点后继*/
if (Q->rear == p) /*若队头是队尾,则删除后将rear指向头结点*/
{
Q->rear = Q->front;
}
free(p);
return OK;
}
int main()
{
/*头结点*/
QueuePtr head = (QueuePtr)malloc(sizeof(QNode));
head->data = 0;
head->next = NULL;
LinkQueue q = { head ,head };
EnQueue(&q, 1);
EnQueue(&q, 2);
QElemType e;
DeQueue(&q, &e);
}
蓝瘦,,,