2024/5/30 顺序表

代码存档

#include <stdio.h>              
#include "./3_list.h"           
                                
int main()                      
{                               
    list* sq = create_list();   
                                
    insert_list(sq,3);          
    insert_list(sq,7);          
                                
                                
    show_list(sq);              
                                
    insert_listByIndex(sq,9,0); 
    show_list(sq);              
    insert_listByIndex(sq,44,2);
    show_list(sq);              
    insert_listByIndex(sq,99,4);
    show_list(sq);              
                                
    datatype x;                 
    x=delete_listByIndex(sq,2); 
    show_list(sq);              
    printf("%d\n",x);           
                                
    free_list(&sq);             
    return 0;                   
}                               
                                
                                






#include <stdio.h>                                       
#include <stdlib.h>                                      
#include "./3_list.h"                                    
                                                         
                                                         
                                                         
list* create_list(void)                                  
{                                                        
                                                         
    list* sq = (list*)malloc(sizeof(list));              
    if(NULL == sq)                                       
    {                                                    
        printf("顺序表创建失败\n");                      
        return NULL;                                     
    }                                                    
    sq->pos=0;                                           
    return sq;                                           
}                                                        
                                                         
                                                         
int insert_list(list* sq,datatype num)                   
{                                                        
    if(sq->pos >= N)                                     
    {                                                    
        printf("顺序表已满\n");                          
        return -1;                                       
    }                                                    
                                                         
    sq->data[sq->pos] = num;                             
    sq->pos++;                                           
                                                         
    return 0;                                            
}                                                        
                                                         
                                                         
datatype delete_list(list* sq)                           
{                                                        
    if(0 == sq->pos)                                     
    {                                                    
        printf("顺序表为空\n");                          
        return (datatype)-1;                             
    }                                                    
    sq->pos--;                                           
    datatype num = sq->data[sq->pos-1];                  
    return 0;                                            
}                                                        
                                                         
void show_list(list* sq)                                 
{                                                        
    for(int i=0;i<sq->pos;i++)                           
    {                                                    
        printf("%d ",sq->data[i]);                       
                                                         
    }                                                    
    putchar(10);                                         
return;                                                  
}                                                        
                                                         
                                                         
void insert_listByIndex(list* sq,datatype num,int index) 
{                                                        
    if(sq->pos>=N)                                       
    {                                                    
        printf("顺序表已满");                            
        return;                                          
    }                                                    
    if(index<0 || index>sq->pos){                        
        printf("插入位置非法");                          
        return;                                          
    }                                                    
    for(int i=sq->pos;i>=index+1;i--)                    
    {                                                    
    sq->data[i]=sq->data[i-1];                           
    }                                                    
    sq->data[index]=num;                                 
    sq->pos++;                                           
    return;                                              
}                                                        
                                                         
datatype delete_listByIndex(list* sq,int index)          
{                                                        
    if(0 == sq->pos)                                     
    {                                                    
    printf("顺序表为空");                                
    return 0;                                            
    }                                                    
                                                         
    if(index<0 || index>sq->pos)                         
    {                                                    
    printf("删除位置非法");                              
    return 0;                                            
    }                                                    
                                                         
    datatype num = sq->data[index];                      
                                                         
    for(int i=index;i<=sq->pos-2;i++)                    
    {                                                    
        sq->data[i] = sq->data[i+1];                     
                                                         
    }                                                    
    sq->pos--;                                           
    return num;                                          
                                                         
}                                                        
                                                         
                                                         
void free_list(list** sq)                                
{                                                        
    free(*sq);                                           
    *sq = NULL;                                          
    printf("顺序表已删除\n");                            
}                                                        
                                                         
                                                         
                                                         
                                                         
#ifndef __LIST_H__
#define __LIST_H__

#define N 7
typedef int datatype;
typedef struct
{
    datatype data[N];
    int pos;
}list;


list* create_list(void);
int insert_list(list* sq,datatype num);
datatype delete_list(list* sq);
void show_list(list* sq);
void insert_listByIndex(list* sq,datatype num,int index);
datatype delete_listByIndex(list* sq,int index);

void free_list(list** sq);                                    






#endif
                                                              
                                                              
                                                              
                                                              
                                                              
                                                              
                                                              
                                                              

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值