【数据结构】顺序表

一、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                                                                                          
                                                                                                
                                                                                                
                                                                                                
                                                                                                

运行结果:

相关推荐
sudebao点com6 小时前
一次“Google 能打开,FlexTV 打不开”的 DNS 故障排查:从 curl 超时到完整证据链
windows·macos·https·cdn·dns·nslookup·网络排错
Herbert_hwt8 小时前
C语言零基础入门:循环控制与数据类型详解
c语言·数据结构·算法
非凡ghost9 小时前
分区助手:Windows 磁盘管理的“瑞士军刀“,分区调整不再怕丢数据
服务器·windows·电脑·软件需求
晚风醉蝶9 小时前
1-6-插入排序-InsertionSort
java·数据结构·排序算法
Tyler_TXZ10 小时前
C++C语言之——二叉树
c语言·开发语言·数据结构·c++·二叉树
有点。10 小时前
C++二叉树二(练习题)
数据结构·c++·算法·图论
LuminousCPP10 小时前
栈和队列专题(一):LeetCode 20. 有效的括号
数据结构·经验分享·笔记·leetcode·手写栈
白狐_79812 小时前
408 数据结构|线索二叉树两题详解:先序线索化后的空链域 + 中序前驱/后继判断
c语言·数据结构·链表
疯狂打码的少年13 小时前
【数据结构】二叉排序树(BST)的定义与操作
数据结构·笔记·算法
wabs66613 小时前
关于字符串【力扣541.反转字符串II的思考】
数据结构·算法·leetcode·字符串