2024.2.22

linkdui:

主函数

#include <stdio.h>                            
#include"liandui.h"                           
int main(int argc, const char *argv[])        
{                                             
    linkpos*pos= create_liandui();            
                                              
    pop_rudui(pos,1);                         
    pop_rudui(pos,2);                         
    pop_rudui(pos,3);                         
    show_liandui(pos);                        
                                              
    head_chudui(pos);                         
    head_chudui(pos);                         
    show_liandui(pos);                        
                                              
    return 0;                                 
}                                             
                                              
   功能函数

     #include <stdio.h>                                              
  #include<stdlib.h>                                              
  #include"liandui.h"                                             
 linkpos*create_liandui()                                         
 {                                                                
     linkpos*pos=(linkpos*)malloc(sizeof(linkpos));               
     pos->front=(link*)malloc(sizeof(link));                      
     if(pos->front==NULL)                                         
     {                                                            
         printf("erro\n");                                        
     }                                                            
     pos->front->next=NULL;                                       
     pos->rear=pos->front;                                        
     pos->front->text.len=0;                                      
     return pos;                                                  
                                                                  
 }                                                                
 void pop_rudui(linkpos*pos,datatype num)                         
 {                                                                
     link*temp=(link*)malloc(sizeof(link));                       
     if(NULL==temp)                                               
     {                                                            
         printf("creat_erro\n");                                  
         return;                                                  
     }                                                            
     temp->next=NULL;                                             
     temp->text.data=num;                                         
                                                                  
     temp->next=pos->rear->next;                                  
     pos->rear->next=temp;                                        
     pos->front->text.len++;                                      
     return;                                                      
 }                                                                
 void head_chudui(linkpos*pos)                                    
 {                                                                
     if(pos->front->next==NULL)                                   
     {                                                            
         printf("duikongerro\n");                                 
         return;                                                  
     }                                                            
     link*temp=pos->front->next;                                  
     pos->front->next=temp->next;                                 
     free(temp);                                                  
     pos->front->text.len--;                                      
 }                                                                
 void show_liandui(linkpos*pos)                                   
 {                                                                
     linkpos*p=pos;                                               
     while(p->front->next!=NULL)                                  
     {                                                            
         p->front=p->front->next;                                 
         printf("%d  ",p->front->text.data);                      
     }                                                            
     printf("\n");                                                
 }                                                                
     

                                 
    头文件

    

#ifndef __FUNC__
#define __FUNC__
typedef int datatype;
union msg
{
    datatype data;
    int len;
};
typedef struct link
{
    union msg text;
    struct link *next;

}link;
typedef struct
{
   link*front;
   link*rear;
}linkpos;
void pop_rudui(linkpos*pos,datatype num);
void show_liandui(linkpos*pos);
linkpos*create_liandui();
void head_chudui(linkpos*pos);                  

#endif                                          

  

   主函数

      #include <stdio.h>                             
#include"shunxudui.h"                          
int main(int argc, const char *argv[])         
{                                              
    dui*sq=create_shunxudui();                 
    rudui(sq,1);                               
    rudui(sq,2);                               
    rudui(sq,3);                               
    rudui(sq,4);                               
    show_shunxudui(sq);                        
                                               
    chudui(sq);                                
    chudui(sq);                                
    show_shunxudui(sq);                        
    len_shunxudui(sq);                         
                                               
    return 0;                                  
}                                              
  功能函数:

 

#include <stdio.h>
#include<stdlib.h>
#include"shunxudui.h"
dui* create_shunxudui()
{
    dui*sq=(dui*)malloc(sizeof(dui));
    if(NULL==sq)
    {
        printf("erro\n");
        return NULL;
    }

    sq->front=0;
    sq->rear=0;
    return sq;
}
int dui_is_full(dui*sq)
{
    return (sq->rear+1)%N==sq->front ? 1:0;
}
int dui_is_kong(dui*sq)
{
    return sq->rear==sq->front ? 1:0;
}

void rudui(dui*sq , datatype num)
{
    if(dui_is_full(sq)==1)
    {
        printf("full\n");                                       
        return;
    }
    sq->data[sq->rear]=num;
    sq->rear=(sq->rear+1)%N;
    return;

}
datatype chudui(dui*sq)
{
    if(dui_is_kong(sq)==1)
    {
        printf("kong\n");
        return (datatype)-1;
    }
    datatype num=sq->data[sq->front];
    sq->front=(sq->front+1)%N;
    return num;
}
void show_shunxudui(dui*sq)
{
    int i=sq->front;
    for(i=sq->front;i!=sq->rear;i=(i+1)%N)
    {

        printf("%d ",sq->data[i]);


    }
    printf("\n");
}
int len_shunxudui(dui*sq)
{
    int len=0;
    int i=sq->front;
    for(i=sq->front;i!=sq->rear;i=(i+1)%N)
    {

        len++;

    }

    printf("len=%d\n",len);
}

  头文件:

     

#ifndef __FUNC__
#define __FUNC__
#define N 31
typedef int datatype;
typedef struct dui
{
    datatype data[N];
    int front;
    int rear;
}dui;
dui* create_shunxudui();
void rudui(dui*sq , datatype num);
datatype chudui(dui*sq);
void show_shunxudui(dui*sq);
int len_shunxudui(dui*sq);

#endif
                                         
 

                                   
                                               
                                               
                                     
                                                
                                                

                                    

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值