数据结构第4天

本文详细介绍了如何在C语言中使用结构体和指针实现了一个链接队列,包括创建队列、尾部插入元素、遍历队列以及头部删除元素的函数。
摘要由CSDN通过智能技术生成

主函数

 #include <stdio.h>
 #include"./04_linkqueue.h"
 int main(int argc, const char *argv[])
 {
     linkpos*pos=create_linkqueue();
     insertend_linkqueue(pos,5);
     insertend_linkqueue(pos,23);
     insertend_linkqueue(pos,78);
     insertend_linkqueue(pos,45);
     insertend_linkqueue(pos,12);
     show_linkqueue(pos);
     dataType num=deletehead_linkqueue(pos);
     show_linkqueue(pos);                     
     return 0;
 }   
                                              

头文件

 #ifndef __func_H__
 #define __func_H__
 typedef int dataType;
 union msg{
     dataType data;
     int len;
 };
 typedef struct node{
     union msg text;
     struct node *next;
 }linkQueue;
typedef struct
{
    linkQueue *rear;
    linkQueue *front;
}linkpos;                            
linkpos*create_linkqueue();
void insertend_linkqueue();
void show_linkqueue();
dataType deletehead_linkqueue();

#endif

封装函数

 #include <stdio.h>                                                          
 #include <stdlib.h>                                                         
 #include "./04_linkqueue.h"                                                 
 //创建队列                                                                  
 linkpos*create_linkqueue()                                                  
 {                                                                           
     linkpos*pos=(linkpos*)malloc(sizeof(linkpos));                          
     pos->front=(linkQueue*)malloc(sizeof(linkQueue));                       
     if(pos->front==NULL)                                                    
     {                                                                       
         printf("队列创建失败\n");                                           
         return NULL;                                                        
     }                                                                       
     pos->front->next=NULL;                                                  
     pos->front->text.len=0;                                                 
     pos->rear=pos->front;                                                   
     return pos;                                                             
 }                                                                           
 //尾插法                                                                    
 void insertend_linkqueue(linkpos*pos,dataType num)                          
 {                                                                           
     linkQueue*temp=(linkQueue*)malloc(sizeof(linkQueue));                   
     if(NULL==temp)                                                          
     {                                                                       
         printf("创建结点失败\n");                                           
         return;                                                             
     }                                                                       
     temp->next=NULL;                                                        
     temp->text.data=num;                                                    
     temp->next=pos->rear->next;                                             
     pos->rear->next=temp;                                                   
     pos->front->text.len++;                                                 
 }                                                                           
 //遍历                                                                      
 void show_linkqueue(linkpos*pos)                                            
 {                                                                           
     linkQueue*p=pos->front;                                                 
     while(p->next!=NULL)                                                    
     {                                                                       
         p=p->next;                                                          
         printf("%d ",p->text.data);                                         
     }                                                                       
     printf("\n");                                                           
 }                                                                           
 //头删                                                                      
 dataType deletehead_linkqueue(linkpos*pos)                                  
 {                                                                           
     linkQueue *p=pos->front->next;                                          
     dataType num=p->text.data;                                              
     pos->front->next=p->next;                                               
     free(p);                                                                
     p=NULL;                                                                 
     pos->front->text.len--;                                                 
     return num;                                                             
 }                                                                           
                                                                             
                                                                             

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值