赞
踩
对队进行入队,出队,判断是否队空的操作
typedef struct Node { //定义队的结构
int data; //数据域data
struct Node* next; //指针域next
}Node;
Node* initQueue(void) //初始化队
{
Node* Q = (Node*)malloc(sizeof(Node)); //定义一个新的节点
Q->data = 0; //data
Q->next = NULL; //next指向NULL
return Q;
}
代码如下(示例):
void enQueue(Node* Q, int data) //入队操作
{
Node* q = Q; //定义一个q指向Q
Node* node = (Node*)malloc(sizeof(Node));//新节点node
node->data = data; //data
for (int i = 0; i < Q->data; i++) //for循环找到最后的节点位置
{
q = q->next; //
}
node->next = q->next; //node的指针指向q的指针,即NULL
q->next = node; //q的指针指向node
Q->data++; //头部数据域++
}
代码如下(示例):
int isEmpty(Node* Q) //判断是否为队空
{
if (Q->data == 0 || Q->next == NULL) //当头部的data等于0或者是下一个节点指向NULL都为空
{
return 1;
}
else
{
return 0;
}
}
代码如下(示例):
int deQueue(Node* Q) //出队 { Node* node = Q->next; //node取得第一个节点 int data; // if (isEmpty(Q)) //出队前判断队是否为空 { return -1; } else { data = node->data; //data Q->next = node->next; //Q的指针指向node的指针 free(node); //释放掉node Q->data--; //头部数据域-- return data; } }
代码如下(示例):
#include<stdio.h> #include<stdlib.h> typedef struct Node { //定义队的结构 int data; //数据域data struct Node* next; //指针域next }Node; Node* initQueue(void) //初始化队 { Node* Q = (Node*)malloc(sizeof(Node)); //定义一个新的节点 Q->data = 0; //data Q->next = NULL; //next指向NULL return Q; } int isEmpty(Node* Q) //判断是否为队空 { if (Q->data == 0 || Q->next == NULL) //当头部的data等于0或者是下一个节点指向NULL都为空 { return 1; } else { return 0; } } void enQueue(Node* Q, int data) //入队操作 { Node* q = Q; //定义一个q指向Q Node* node = (Node*)malloc(sizeof(Node));//新节点node node->data = data; //data for (int i = 0; i < Q->data; i++) //for循环找到最后的节点位置 { q = q->next; // } node->next = q->next; //node的指针指向q的指针,即NULL q->next = node; //q的指针指向node Q->data++; //头部数据域++ } int deQueue(Node* Q) //出队 { Node* node = Q->next; //node取得第一个节点 int data; // if (isEmpty(Q)) //出队前判断队是否为空 { return -1; } else { data = node->data; //data Q->next = node->next; //Q的指针指向node的指针 free(node); //释放掉node Q->data--; //头部数据域-- return data; } } void printQueue(Node* Q) { Node* q = Q->next; while (q) { printf("%d->", q->data); q = q->next; } printf("\n"); } void main(void) { int deQueue_data; Node* Q = initQueue(); enQueue(Q, 1); enQueue(Q, 2); enQueue(Q, 3); printQueue(Q); deQueue_data = deQueue(Q); if (deQueue_data == -1) { printf("该队为空,无法进行出队操作"); } else { printf("deQueue_data:%d\n", deQueue_data); } printQueue(Q); }
代码或注释有错误地方,麻烦指出,谢谢。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。