关于C++每次入队4个元素,出队2个元素,打印链式队列,打印当前链式队列的队首元素和队尾元素; 10
#include<stdio.h>#include<stdlib.h>typedefstructNode{intdata;structNode*next;}LinkQue...
#include <stdio.h>#include <stdlib.h>
typedef struct Node { int data; struct Node *next;}LinkQueueNode;
typedef struct{ LinkQueueNode *front; LinkQueueNode *rear;}LinkQueue;
void Init(LinkQueue*Q) /*初始化*/
{ Q->front=Q->rear=(LinkQueueNode *)malloc(sizeof(LinkQueueNode));
Q->front->next=NULL;
}
int EmptyQuene(LinkQueue *Q) /*判断队列是否为空*/
{
if(Q->front==Q->rear)
return 1;
else
return 0;}
void creatlist(LinkQueue*Q) /*创键队列*/
{ int i,num,j;
LinkQueueNode *p;
printf("输入队列长度:\n");
scanf("%d",&num);
for(i=1;i<=num;i++)
{
p=(LinkQueueNode*)malloc(sizeof(LinkQueueNode));
printf("please %d send the number\n",i);
scanf("%d",&(p->data));
if(i==1)
{
Q->front=p;
p->next=NULL;
}
Q->rear=p;
}
Q->rear->next=NULL;
}
int EnterQueue(LinkQueue *Q,int x)
/*增加节点*/
{
LinkQueueNode *NewNode;
NewNode=(LinkQueueNode*)malloc(sizeof(LinkQueueNode));
if(NewNode!=NULL)
{
NewNode->data=x;
NewNode->next=NULL;
Q->rear->next=NewNode;
Q->rear=NewNode;
return 1;
}
else
return 0;}
void DeleteQueue(LinkQueue *Q)
/*删除节点*/{
int data;
LinkQueueNode *p;
if(Q->front==Q->rear)
{
printf("null");
} else
{ p=Q->front;
Q->front=Q->front->next;
free(p);
}
}
void PrintNode(LinkQueue *Q)
/*打印节点*/{
LinkQueueNode *p; p=Q->front;
while(p!=NULL) {
printf("%d\n",p->data); p=p->next; }
}
void print_head_end(LinkQueue* Q) /*打印头尾节点*/
{
printf("队首元素:%d\n",Q->front->data);
printf("队尾元素: %d\n",Q->rear->data);
}
void clearQueue(LinkQueue* Q)
{
struct LinkQueueNode *p = Q->front;
while(p != NULL)
{ Q->front = Q->front->next;
p = Q->front;
free(p);
}
Q->rear = NULL;
return;}
void main()
{
LinkQueue *Q=(LinkQueue*)malloc(sizeof(LinkQueue));
int empty;
int i ;
int j;
int k;
Init(Q);
empty=EmptyQuene(Q);
creatlist(Q);
empty=EmptyQuene(Q);
print_head_end(Q);
clearQueue(Q);
Init(Q);
for(i =1;i<=3;i ++)
{
for(j=1;j<=4;j++)
{
EnterQueue(Q,j);
}
for(j=1;j<=2;j++)
{
DeleteQueue(Q);
}
PrintNode(Q);
print_head_end(Q);
printf("第%d遍 \n",i); }
scanf("%d",&k) ;
return;}
我想实现每次入队4个元素,出队2个元素,打印链式队列,打印当前链式队列的队首元素和队尾元素; 但只出列了1个元素 怎么搞才能出列2个元素 展开
typedef struct Node { int data; struct Node *next;}LinkQueueNode;
typedef struct{ LinkQueueNode *front; LinkQueueNode *rear;}LinkQueue;
void Init(LinkQueue*Q) /*初始化*/
{ Q->front=Q->rear=(LinkQueueNode *)malloc(sizeof(LinkQueueNode));
Q->front->next=NULL;
}
int EmptyQuene(LinkQueue *Q) /*判断队列是否为空*/
{
if(Q->front==Q->rear)
return 1;
else
return 0;}
void creatlist(LinkQueue*Q) /*创键队列*/
{ int i,num,j;
LinkQueueNode *p;
printf("输入队列长度:\n");
scanf("%d",&num);
for(i=1;i<=num;i++)
{
p=(LinkQueueNode*)malloc(sizeof(LinkQueueNode));
printf("please %d send the number\n",i);
scanf("%d",&(p->data));
if(i==1)
{
Q->front=p;
p->next=NULL;
}
Q->rear=p;
}
Q->rear->next=NULL;
}
int EnterQueue(LinkQueue *Q,int x)
/*增加节点*/
{
LinkQueueNode *NewNode;
NewNode=(LinkQueueNode*)malloc(sizeof(LinkQueueNode));
if(NewNode!=NULL)
{
NewNode->data=x;
NewNode->next=NULL;
Q->rear->next=NewNode;
Q->rear=NewNode;
return 1;
}
else
return 0;}
void DeleteQueue(LinkQueue *Q)
/*删除节点*/{
int data;
LinkQueueNode *p;
if(Q->front==Q->rear)
{
printf("null");
} else
{ p=Q->front;
Q->front=Q->front->next;
free(p);
}
}
void PrintNode(LinkQueue *Q)
/*打印节点*/{
LinkQueueNode *p; p=Q->front;
while(p!=NULL) {
printf("%d\n",p->data); p=p->next; }
}
void print_head_end(LinkQueue* Q) /*打印头尾节点*/
{
printf("队首元素:%d\n",Q->front->data);
printf("队尾元素: %d\n",Q->rear->data);
}
void clearQueue(LinkQueue* Q)
{
struct LinkQueueNode *p = Q->front;
while(p != NULL)
{ Q->front = Q->front->next;
p = Q->front;
free(p);
}
Q->rear = NULL;
return;}
void main()
{
LinkQueue *Q=(LinkQueue*)malloc(sizeof(LinkQueue));
int empty;
int i ;
int j;
int k;
Init(Q);
empty=EmptyQuene(Q);
creatlist(Q);
empty=EmptyQuene(Q);
print_head_end(Q);
clearQueue(Q);
Init(Q);
for(i =1;i<=3;i ++)
{
for(j=1;j<=4;j++)
{
EnterQueue(Q,j);
}
for(j=1;j<=2;j++)
{
DeleteQueue(Q);
}
PrintNode(Q);
print_head_end(Q);
printf("第%d遍 \n",i); }
scanf("%d",&k) ;
return;}
我想实现每次入队4个元素,出队2个元素,打印链式队列,打印当前链式队列的队首元素和队尾元素; 但只出列了1个元素 怎么搞才能出列2个元素 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询