作业。。。。。

顺序表按元素删除

参数:删除元素,顺序表

1.调用元素查找的函数

4.根据下表删除 delete_sub(list,sub);

//删除元素                                                        
void delete_element(int element, Sqlist *list)                    
{                                                                 
    if (NULL == list)                                             
    {                                                             
        printf("delete_element error: list is NULL\n");           
        return;                                                   
    }                                                             
                                                                  
    int sub = search_sub_sqlist(element, list);                   
    if (sub != -1)                                                
    {                                                             
        delete_sub(list, sub);                                    
        printf("Element %d deleted from the list\n", element);    
    } else                                                        
    {                                                             
        printf("Element %d not found in the list\n", element);    
    }                                                             
}                                                                 

顺序表按元素修改

参数:

1.调用元素查找的函数

4.根据下表修改update_sub(list,sub);

 //元素修改                                                        
 void update_sub(Sqlist *list, int old_element, int new_element)   
 {                                                                 
     int pos = search_sub_sqlist(old_element, list);               
     if (pos == SUCCESS)                                           
     {                                                             
         for (int i = 0;i <list->len; i++)                       
         {                                                         
             if (list->data[i] == old_element)                     
             {                                                     
                 change_sub_sqlist(new_element, i, list);          
                 break;                                            
             }                                                     
         }                                                         
     } else                                                        
     {                                                             
         printf("Element %d not found in the list.\n", old_element)
     }                                                             
 }                                                                 

/顺序表按元素查找

参数:顺序表,查找的元素

1.判断顺序表是否位空

2.判断顺序表是否创建

3.循环顺序表的元素,如果存在则返回下表sub,否则-1

//顺序表按元素查找                                               
int search_sub_sqlist(int sub, Sqlist *list)
{
    // 判断顺序表是否为空
    if (NULL == list || list->len == 0) 
    {
        printf("search_sub_sqlist error: List is empty or not cre
        return -1;
    }

    // 循环顺序表的元素
    for (int i = 0; i< list->len; i++)
    {
        if (list->data[i] == sub)
        {
            printf("Element %d found at position %d\n", sub, i);
            return i; // 返回元素的下标
        }
    }

    printf("Element %d not found\n", sub);
    return -1; // 未找到元素,返回-1

顺序表去重

​

​int remove_same(Sqlist *list)                
{                                            
    //1.判断顺序表为空                       
    //2.判断顺序表是否创建                   
    if(NULL==list || 0==list->len)           
        return FALSE;                        
    //3.去重                                 
    for(int i=0;i<list->len;i++)             
    {                                        
        for(int j=i+1;j<list->len;j++)       
        {                                    
            if(list->data[i]==list->data[j]) 
            {                                
                //删除j对应的元素            
                delete_sub(list,j);          
                j--;                         
            }                                
        }                                    
    }                                        
    return SUCCESS;                          
}                                            

顺序表排序 (冒泡、选择排序)

//冒泡排序:                                         
void bubble_sort(Sqlist *list)                       
{                                                    
    if (NULL == list || list->len <= 1)              
    {                                                
        printf("bubble_sort error\n");               
        return;
    }                                                
                                                     
    for (int i = 0; i < list->len - 1; i++)          
    {                                                
        for (int j = 0; j < list->len - 1 - i; j++)  
        {                                            
            if (list->data[j] < list->data[j + 1])   
            {                                        
                                                     
                datatype temp = list->data[j];       
                list->data[j] = list->data[j + 1];   
                list->data[j + 1] = temp;            
            }                                        
        }                                            
    }                                                
}                                                    

                                                          
//选择排序;
void selection_sort(Sqlist *list)                         
{                                                         
    if (NULL == list || list->len<= 1)                    
    {                                                     
        printf("selection_sort error\n");                 
        return;                                           
    }                                                     
                                                          
    for (int i = 0; i< list->len - 1; i++)                
    {                                                     
        int min_index = i;                                
        for (int j = i + 1; j < list->len; j++)           
        {                                                 
            if (list->data[j] <list->data[min_index])    
            {                                             
                min_index = j;                            
            }                                             
        }                                                 
                                                          
        if (min_index != i)                               
        {                                                 
            datatype temp = list->data[i];                
            list->data[i] = list->data[min_index];        
            list->data[min_index] = temp;                 
        }                                                 
    }                                                     
}                                                         

顺序表释放

​
Sqlist* free_fun(Sqlist *list) 
{                              
        //1.判断顺序表是否创建 
    if(NULL==list )            
        return NULL;           
                               
    free(list);                
    list=NULL;                 
    return list;               
                               
}                              

​
相关推荐
rkmhr_sef9 小时前
Redis 下载与安装 教程 windows版
数据库·windows·redis
@_@哆啦A梦9 小时前
windows怎样查看系统信息(处理器等)
windows
落落落sss11 小时前
MongoDB
数据库·windows·redis·mongodb·微服务·wpf
黄铎彦12 小时前
使用GDI+、文件和目录和打印API,批量将图片按文件名分组打包成PDF
c++·windows·pdf
比花花解语18 小时前
Kafka在Windows系统使用delete命令删除Topic时出现的问题
windows·分布式·kafka
rainmanqqst19 小时前
耀世16Pro鼠标卡顿
windows
早起的年轻人20 小时前
Java List 自定义对象排序 Java 8 及以上版本使用 Stream API
java·windows·list
专注VB编程开发20年1 天前
除了 EasyXLS,加载和显示.xlsx 格式的excel表格,并支持单元格背景色、边框线颜色和粗细等格式化特性
c++·windows·excel·mfc·xlsx
Natsuagin1 天前
轻松美化双系统启动界面与同步时间设置(Windows + Ubuntu)
linux·windows·ubuntu·grub
xing.yu.CTF1 天前
Web入侵实战分析-常见web攻击类应急处置实验2
运维·服务器·windows·web安全·apache·php漏洞·phpstudy后门漏洞