链队的实现

发布于:2024-02-28 ⋅ 阅读:(62) ⋅ 点赞:(0)

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 后查看

网站公告

今日签到

点亮在社区的每一天
去签到