您的位置:首页 > 编程语言 > C语言/C++

C语言二叉树与队列实现基础代码

2014-03-22 22:58 656 查看
http://blog.csdn.net/xzongyuan/article/details/21830097

c语言队列基本操作代码

基于是上一篇做了修改,主要修改结构提,因为准备加入树的操作,代码会越来越繁杂,为了还原整个改写过程,分步显示,

#include<stdio.h>
#include<stdlib.h>

typedef struct _node
{
int value;
struct _node *left;
struct _node *right;
}TNode,*Tree;

//add a *next in q_node is my purpose
//other wise , we need to add in the Tree node struct
//So, for the sake of doesn't modify the struct of tree
//I design a q_node struct to include it
//we can use define command to make it as a template.
typedef struct q_node
{
TNode *t_node;
struct q_node *next;
}QNode;

typedef struct _Queue
{
QNode *head;
QNode *tail;
}Queue;

Queue* init_queue()
{
Queue *queue=(Queue*)malloc(sizeof(Queue));
queue->head = queue->tail = NULL;
return queue;
}

int enQueue(Queue *pQueue,QNode *pQNode)
{
if(pQueue->head == NULL)
{//when it's empty
pQueue->head = pQNode;
pQueue->tail = pQNode;
}
else
{
pQueue->tail->next = pQNode;
pQueue->tail = pQNode;
}
}

QNode* deQueue(Queue *pQueue)
{
if(pQueue->head == NULL)
{
return NULL;
}

QNode *deNode= pQueue->head;
pQueue->head = pQueue->head->next;
return deNode;
}

TNode* init_node(int value)
{
TNode  *new_node = (TNode*)malloc(sizeof(TNode));
new_node->value=value;
new_node->left = new_node->right = NULL;
return new_node;
}

//0:empty
int ifEmpty(Queue *pQueue)
{
if(pQueue->head == NULL)
{
printf("empty tree\n");
return 0;
}

printf("queue is not empty\n");
return 1;
}

int main()
{
Queue *queue=init_queue();
int i;

ifEmpty(queue);
printf("insert node to queue\n");
for(i=1; i<7;i++)
{
TNode *t_node = init_node(i);
QNode *qNode = (QNode*)malloc(sizeof(QNode));
qNode->t_node = t_node;
enQueue(queue,qNode);
// free(node);
}

//  Node *node = init_node(1);
//  printf("node->value = %d\n",node->value);
//  enQueue(queue,node);
ifEmpty(queue);

for(i=0;i<7;i++)
{
QNode *deNode = deQueue(queue);
if(deNode==NULL)
{
printf("NULL\n");
}
else
{
printf("deNode->value = %d\n",deNode->t_node->value);
}

}
free(queue);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: