這個程序花了我非常大的時間,結果證明書本上的例子沒有我這個好,嘿嘿。。。屌炸天
[cpp]
#include <STDIO.H>
#include <STDLIB.H>
typedef int ElemType;
typedef struct LQNode
{
ElemType data;
struct LQNode *next;
}LqueueNode;
typedef struct
{
LqueueNode *rear;
LqueueNode *front;
}LinkQueue;
//初始化
void InitLQueue(LinkQueue *Q)
{
Q->rear=NULL;
Q->front=NULL;
}
//入隊
int EnLQueue(LinkQueue *Q,ElemType x)
{
//把數據原色x值插入不帶頭節點的鏈隊列Q的隊尾,入隊成功則返回1,否則返回0
LqueueNode *p;
p=(LqueueNode *)malloc (sizeof(LqueueNode));
p->data=x;
p->next=NULL;
if(Q->rear==NULL)
Q->rear=Q->front=p;
else
{
Q->rear->next=p;
Q->rear=p;
}
return 1;
}
//出隊
int DelQueue(LinkQueue *Q,ElemType *x)
{
//刪除隊列的隊頭元素,用x返回其值
LqueueNode *q;
if(Q->front==NULL){
printf("Queue is empty!");
return 0;
}
*x=Q->front->data;
q=Q->front;
Q->front=Q->front->next;
if(Q->front==NULL)
Q->rear=NULL;
free(q);
return 1;
}
void print(LinkQueue Q)
{
//顯示隊列中的所有元素
printf("The queue elements are:\n");
while(Q.front!=Q.rear)
{
printf("%d",Q.front->data);
Q.front=Q.front->next;
}
printf("%d",Q.rear->data);
printf("\n");
/* if(Q->front==Q->rear)
printf("空隊列,沒有元素");
else{
printf("該循環隊列各元素依次為:");
for(int k=0;k<QueueLength(Q);k++)
{
printf("%d",Q->front->data);
Q->front=Q->front->next;
}
}*/
}
void main()
{
LinkQueue LQ;
int j,x;
InitLQueue(&LQ);
printf("Input a integer\n");
scanf("%d",&j);
while(j!=0)
{
if(j%2==1)
EnLQueue(&LQ,j);
else
DelQueue(&LQ,&x);
print(LQ);
printf("Input a integer\n");
scanf("%d",&j);
}
}
#include <STDIO.H>
#include <STDLIB.H>
typedef int ElemType;
typedef struct LQNode
{
ElemType data;
struct LQNode *next;
}LqueueNode;
typedef struct
{
LqueueNode *rear;
LqueueNode *front;
}LinkQueue;
//初始化
void InitLQueue(LinkQueue *Q)
{
Q->rear=NULL;
Q->front=NULL;
}
//入隊
int EnLQueue(LinkQueue *Q,ElemType x)
{
//把數據原色x值插入不帶頭節點的鏈隊列Q的隊尾,入隊成功則返回1,否則返回0
LqueueNode *p;
p=(LqueueNode *)malloc (sizeof(LqueueNode));
p->data=x;
p->next=NULL;
if(Q->rear==NULL)
Q->rear=Q->front=p;
else
{
Q->rear->next=p;
Q->rear=p;
}
return 1;
}
//出隊
int DelQueue(LinkQueue *Q,ElemType *x)
{
//刪除隊列的隊頭元素,用x返回其值
LqueueNode *q;
if(Q->front==NULL){
printf("Queue is empty!");
return 0;
}
*x=Q->front->data;
q=Q->front;
Q->front=Q->front->next;
if(Q->front==NULL)
Q->rear=NULL;
free(q);
return 1;
}
void print(LinkQueue Q)
{
//顯示隊列中的所有元素
printf("The queue elements are:\n");
while(Q.front!=Q.rear)
{
printf("%d",Q.front->data);
Q.front=Q.front->next;
}
printf("%d",Q.rear->data);
printf("\n");
/* if(Q->front==Q->rear)
printf("空隊列,沒有元素");
else{
printf("該循環隊列各元素依次為:");
for(int k=0;k<QueueLength(Q);k++)
{
printf("%d",Q->front->data);
Q->front=Q->front->next;
}
}*/
}
void main()
{
LinkQueue LQ;
int j,x;
InitLQueue(&LQ);
printf("Input a integer\n");
scanf("%d",&j);
while(j!=0)
{
if(j%2==1)
EnLQueue(&LQ,j);
else
DelQueue(&LQ,&x);
print(LQ);
printf("Input a integer\n");
scanf("%d",&j);
}
}