1.c
#include"1.h"
link_que* create_que()
{
link_que *Q=(link_que*)malloc(sizeof(link_que));
if(Q==NULL)
{
printf("空间申请失败\n");
return NULL;
}
Q->rear=NULL;
Q->front=NULL;
return Q;
}
//判空
int empty_que(link_que *Q)
{
if(Q==NULL)
{
printf("入参为空\n");
return -1;
}
return Q->front==Q->rear?1:0;
}
//入队
void push_queue(link_que *Q,datatype data)
{
if(Q==NULL)
{
printf("入参为空\n");
return;
}
node_t *new_node = (node_t*)malloc(sizeof(node_t)); // 为新节点分配内存
if (new_node == NULL) {
printf("内存分配失败\n");
return;
}
new_node->data = data;
new_node->next = NULL;
if (empty_que(Q))
{
Q->front = Q->rear = new_node;
}
else
{
Q->rear->next = new_node;
Q->rear = new_node;
}
}
}
//出对
void chudui(link_que *Q)
{
if (empty_que())
{
return ;
}
node_t *temp = Q->front;
Q->front = Q->front->next;
if (Q->front == NULL)
{
Q->rear = NULL;
}
free(temp);
}
return ;
}
//打印
void show_que(link_que *Q)
{
if(Q==NULL)
{
printf("入参为空\n");
return;
}
queue_p p = Q->rear;
while (p != NULL)
{
printf("%d->",Q->data[p]);
p=p->next;
}
}
};
//销毁
void free_que(link_que *Q)
{
if ( Q == NULL)
{
printf("入参为空\n");
return;
}
node_t *new_node = Q;
while (new_node != NULL)
{
node_t * temp =new_node ;
new_node = new_node->next;
free(temp);
}
Q = NULL;
}
1.h
#ifndef __1_H__
#define __1_H__
typedef int datatype;
typedef struct node
{
datatype data;
struct node *next;
} node_t;
typedef struct
{
node_t *front; // 队首指针
node_t *rear; // 队尾指针
} link_que;
link_que* create_que();
int empty_que(link_que *Q);
void push_queue(link_que *Q,datatype data) ;
void chudui(link_que *Q) ;
void show_que(link_que *Q);
void free_que(link_que *Q);
#endif
main.c
#include"1.h"
int main()
{
queue Q=create_que();
push_queue(Q,34);
push_queue(Q,78);
push_queue(Q,96);
push_queue(Q,86);
push_queue(Q,46);
show_que(Q);
chudui(Q);
free_que(Q);
}
本文含有隐藏内容,请 开通VIP 后查看