【数据结构】顺序表

一、main函数

cs 复制代码
#include <stdio.h>
#include <stdlib.h>
#include "./3.sequence.h"
int main(int argc, const char *argv[])
{
    SeqList*list = create_seqlist();
    insert_seqlist(list,10);
    insert_seqlist(list,100);
    insert_seqlist(list,1000);
    insert_seqlist(list,10000);
    insert_seqlist(list,200);

    show_list(list);

    dataype num=del_seqlist(list);
    printf("%d\n",num);

    int index;
    dataype temp;
    printf("请输入要插入的位数和数据>>>");
    scanf("%d",&index);
    scanf("%d",&temp);
    mid_inser_seqlist(list,index,temp);
    show_list(list);

    int n;
    printf("请输入要删除的位数");
    scanf("%d",&n);  
    printf("%d\n",mid_delseqlist(list,n));
    show_list(list);

    updata_list(list,2,777);
    show_list(list);

    select_seqlist(list,1);
    show_list(list);

    int oldnum=999;
    int newnum=10086;
    updataBydata_list(list,999,10086);                                                                                
    show_list(list);
              
    int a=selectBydata_seqlist(list,10086);
    printf("%d\n",a);
    return 0;
}


                                                                                                                      
                                                                                                                      
                                                                                                                      

二、功能函数

cs 复制代码
​
#include <stdio.h>                                                                                                               
#include <stdlib.h>                                                                                                              
#include "./3.sequence.h"                                                                                                        
SeqList*create_seqlist()                                                                                                         
{                                                                                                                                
    SeqList *list = (SeqList*)malloc(sizeof(SeqList));                                                                           
    if(NULL == list)                                                                                                             
    {                                                                                                                            
        return NULL;                                                                                                             
    }                                                                                                                            
    list->pos =0;                                                                                                                
    return list;                                                                                                                 
}                                                                                                                                
                                                                                                                                 
void insert_seqlist(SeqList*list,dataype num) //从尾部插入数据                                                                   
{                                                                                                                                
    if(list->pos >=N)                                                                                                            
    {                                                                                                                            
        printf("顺序表满,插入失败\n");                                                                                          
        return;                                                                                                                  
    }                                                                                                                            
    list->data[list->pos] = num;                                                                                                 
    (list->pos)++;                                                                                                               
    return;                                                                                                                      
}                                                                                                                                
                                                                                                                                 
void show_list(SeqList*list) //遍历顺序表                                                                                        
{                                                                                                                                
    int n;                                                                                                                       
    for(n=0;n<list->pos;n++)                                                                                                     
    {                                                                                                                            
        printf("%d ",list->data[n]);                                                                                             
    }                                                                                                                            
    printf("\n");                                                                                                                
    return;                                                                                                                      
}                                                                                                                                
                                                                                                                                 
dataype del_seqlist(SeqList*list) //从尾部删除数据                                                                               
{                                                                                                                                
    if(list->pos>0)                                                                                                              
    {                                                                                                                            
        (list->pos)--;                                                                                                           
        dataype num=list->data[list->pos];                                                                                       
        return num;                                                                                                              
    }                                                                                                                            
                                                                                                                                 
}                                                                                                                                
                                                                                                                                 
void mid_inser_seqlist(SeqList*list,int index,dataype temp) //按照下标插入数据                                                   
{                                                                                                                                
    int i;                                                                                                                       
    if(index>=N || list->pos>=N || index<=0)                                                                                     
    {                                                                                                                            
        printf("插入位置不合法或顺序表已满\n");                                                                                  
        return;                                                                                                                  
    }                                                                                                                            
    for(i=list->pos;i>index;i--)                                                                                                 
    {                                                                                                                            
        list->data[i]=list->data[i-1];                                                                                           
    }                                                                                                                            
    list->pos++;                                                                                                                 
    list->data[i]=temp;                                                                                                          
}                                                                                                                                

dataype mid_delseqlist(SeqList*list,int index) //按照下标删除数据                                                                                
{                                                                                                                                                
    int i=index;                                                                                                                                 
    dataype temp;                                                                                                                                
    if(index>list->pos || list->pos<=0 || index<0)                                                                                               
    {                                                                                                                                            
        printf("删除位置不合法或顺序表为空\n");                                                                                                  
        return 0;                                                                                                                                
    }                                                                                                                                            
                                                                                                                                                 
    temp=list->data[index];                                                                                                                      
    for(i=index;i<list->pos-1;i++)                                                                                                               
    {                                                                                                                                            
        list->data[i]=list->data[i+1];                                                                                                           
    }                                                                                                                                            
    list->pos--;                                                                                                                                 
    return temp;                                                                                                                                 
}                                                                                                                                                
                                                                                                                                                 
int updata_list(SeqList*list,int index,dataype newnum) //按照下标修改数据                                                                        
{                                                                                                                                                
    if(index<0 || index>=list->pos)                                                                                                              
    {                                                                                                                                            
        printf("修改位置不合法!\n");                                                                                                            
        return -1;                                                                                                                               
    }                                                                                                                                            
    list->data[index]=newnum;                                                                                                                    
    printf("修改成功!\n");                                                                                                                      
    return 0;                                                                                                                                    
}                                                                                                                                                
                                                                                                                                                 
dataype select_seqlist(SeqList*list,int index) //按照下标查找数据                                                                                
{                                                                                                                                                
    if(index<0 || index>=list->pos)                                                                                                              
    {                                                                                                                                            
        printf("查找位置不合法!\n");                                                                                                            
        return -1;                                                                                                                               
    }                                                                                                                                            
    return list->data[index];                                                                                                                    
}                                                                                                                                                
                                                                                                                                                 
void updataBydata_list(SeqList*list,dataype oldnum,dataype newnum) //按数据修改数据                                                              
{                                                                                                                                                
    int i=0;                                                                                                                                     
    for(i;i<list->pos;i++)                                                                                                                       
    {                                                                                                                                            
        if(list->data[i] == oldnum)                                                                                                              
        {                                                                                                                                        
            list->data[i] = newnum;                                                                                                              
        }                                                                                                                                        
    }                                                                                                                                            
    return;                                                                                                                                      
}                                                                                                                                                
int selectBydata_seqlist(SeqList*list,dataype num) //按数据查找位置                              
{                                                                                                
    int i=0;                                                                                     
    for(i;i<list->pos;i++)                                                                       
    {                                                                                            
        if(list->data[i]==num)                                                                   
        {                                                                                        
            return i;                                                                            
        }                                                                                        
    }                                                                                            
    return -1;                                                                                   
}                                                                                                
                                                                                                 

​

三、头文件

cs 复制代码
#ifndef __SEQ__                                                                                 
#define __SEQ__                                                                                 
#define N 4                                                                                     
typedef int dataype;                                                                            
typedef struct                                                                                  
{                                                                                               
    dataype data[N];                                                                            
    int pos;                                                                                    
}SeqList;                                                                                       
                                                                                                
SeqList*create_seqlist();                                                                       
void insert_seqlist(SeqList*list,dataype num);                                                  
void show_list(SeqList*list);                                                                   
dataype del_seqlist(SeqList*list);                                                              
void mid_inser_seqlist(SeqList*list,int index,dataype temp);                                    
dataype mid_delseqlist(SeqList*list,int index);                                                 
int updata_list(SeqList*list,int index,dataype newnum);                                         
dataype select_seqlist(SeqList*list,int index);                                                 
void updataBydata_list(SeqList*list,dataype oldnum,dataype mewnum);                             
int selectBydata_seqlist(SeqList*list,dataype num);                                             
                                                                                                
                                                                                                
#endif                                                                                          
                                                                                                
                                                                                                
                                                                                                
                                                                                                

运行结果:

相关推荐
阿让啊3 小时前
C语言strtol 函数使用方法
c语言·数据结构·c++·单片机·嵌入式硬件
superlls6 小时前
(算法 哈希表)【LeetCode 349】两个数组的交集 思路笔记自留
java·数据结构·算法
Ripple123127 小时前
数据结构:顺序表与链表
数据结构·链表
一个响当当的名号8 小时前
B树,B+树,B*树(无代码)
数据结构·b树
古译汉书10 小时前
嵌入式铁头山羊stm32-ADC实现定时器触发的注入序列的单通道转换-Day26
开发语言·数据结构·stm32·单片机·嵌入式硬件·算法
野犬寒鸦10 小时前
力扣hot100:相交链表与反转链表详细思路讲解(160,206)
java·数据结构·后端·算法·leetcode
你是人间五月天10 小时前
sentinel实现控制台与nacos数据双向绑定
windows·sentinel
GalaxyPokemon11 小时前
LeetCode - 1089. 复写零
数据结构
失散1311 小时前
分布式专题——1.2 Redis7核心数据结构
java·数据结构·redis·分布式·架构
zzzsde12 小时前
【数据结构】强化训练:从基础到入门到进阶(1)
数据结构