数据结构——顺序表

本文介绍了使用C语言实现的顺序表数据结构,包括创建顺序表、插入数据、删除数据、按位置插入、删除和修改以及查询数据的方法,并在`main.c`中展示了这些操作的应用实例。
摘要由CSDN通过智能技术生成

题目

按下标插入,删除,修改,查询

 1_SeqList.h

#ifndef __SEQLIST__
#define __SEQLIST__

#define N 10
typedef struct
{
    int data[N];
    int pos;
}SeqList;

SeqList* create_seqList(void);
void insert_seqList(SeqList* sq,int num);
int delete_sqList(SeqList* sq);
void show_seqList(SeqList* sq);
void insert_seqListByindex(SeqList* sq,int index,int num);
int delete_sqListByindex(SeqList* sq,int index);
void change_seqListByindex(SeqList* sq,int index,int num);
int inquire_seqListByindex(SeqList* sq, int index); 




                                                               

#endif

 seqlist.c

​
 #include <stdio.h>
 #include <stdlib.h>
 #include "./1_SeqList.h"
 
 
 /*
  * function:    创建顺序表
  * @param [ in] 
  * @param [out] 
  * @return      
  */
  SeqList* create_seqList(void)
 {
 
     SeqList* sq=(SeqList*)malloc(sizeof(SeqList));
     if(NULL==sq)
     {                                                         
         printf("顺序表创建失败\n");
         return NULL;
     }
     sq->pos=0;
     return sq;
 }
 
 /*
  * function:    插入数据
  * @param [ in] 
  * @param [out] 
  * @return      
  */
 void insert_seqList(SeqList* sq,int num)
 {
     if(sq->pos >= N)
     {
         printf("顺序表为满,插入失败\n");
         return;
     }
     sq->data[sq->pos]=num;
     sq->pos++;
     return;
}

/*
 * function:    删除数据                                     
 * @param [ in] 
 * @param [out] 
 * @return      
 */

int delete_sqList(SeqList* sq)
{
    if(0 == sq->pos)
    {
        printf("顺序表为空,删除失败\n");
        return (int)(-1);
    }
    sq->pos--;
    int num = sq->data[sq->pos];
    return num;
}

/*
 * function:    遍历数组
 * @param [ in] 
 * @param [out] 
 * @return      
 */
void show_seqList(SeqList* sq)
{
    for(int i=0;i<sq->pos;i++)
    {
        printf("%d\t",sq->data[i]);
    }
    printf("\n");
    return;
}
/*
 * function:    按照位置插入数据
 * @param [ in] 
 * @param [out]                                                    
 * @return      
 */
void insert_seqListByindex(SeqList* sq,int index,int num)
{
    if(sq->pos >= N)
    {
        printf("顺序表为满,插入失败\n");
        return;
    }
    if(index<0 || index>sq->pos)
    {
        printf("index=%d位置非法,插入失败\n",index);
        return;
    }
    for(int j=sq->pos;j>=index+1;j--)
    {
        sq->data[j] = sq->data[j-1];
    }
    sq->data[index]=num;
    sq->pos++;
    return;
}


/*
 * function:   删除数据 
 * @param [ in] 
 * @param [out] 
 * @return                                               
 */

int delete_sqListByindex(SeqList* sq, int index)
{
    if(0 == sq->pos)
    {
        printf("顺序表为空,删除失败\n");
//      return;
    }

    if(index<0 || index>sq->pos)
    {
        printf("index=%d位置非法,删除失败\n",index);
//      return;
    }
    //    int j=index+1;
    int tem;
    tem=sq->data[index];
    for(int j=index+1;j<=sq->pos-1;j++)
    {
        sq->data[j-1]=sq->data[j];
    }
    sq->pos--;
    printf("tem=%d\n",tem);
    return tem;

}
/*
 * function:    按下标位置修改数据                          
 * @param [ in] 
 * @param [out] 
 * @return      
 */

void change_seqListByindex(SeqList* sq,int index,int num)
{
    if(0 == sq->pos)
    {
        printf("顺序表为空,修改失败\n");
        return;
    }
    if(index<0 || index>sq->pos)
    {
        printf("index=%d位置非法,修改失败\n",index);
        return;
    }
    sq->data[index]=num;

    return;

}

/*                                                       
 * function:    按下标位置查询数据
 * @param [ in] 
 * @param [out] 
 * @return      
 */

int inquire_seqListByindex(SeqList* sq, int index)
{
    if(0 == sq->pos)
    {
        printf("顺序表为空,修改失败\n");
//        return;
    }
    if(index<0 || index>sq->pos)
    {
        printf("index=%d位置非法,修改失败\n",index);
//        return;
    }
    int var;
    var=sq->data[index];
    printf("var=%d\n",var);
    return var;

}
                                                         

main.c 

 #include <stdio.h>
 #include "1_SeqList.h"
 int main(int argc, const char *argv[])
 {
     SeqList* sq=create_seqList();
     insert_seqList(sq,100);
     delete_sqList(sq);
     insert_seqList(sq,99);
     insert_seqList(sq,97);
     insert_seqList(sq,96);
     insert_seqList(sq,88);
     insert_seqList(sq,95);
     delete_sqList(sq);
     insert_seqList(sq,93);                        
     show_seqList(sq);
     insert_seqListByindex(sq,4,10);
     show_seqList(sq);
     insert_seqListByindex(sq,2,66);
     show_seqList(sq);
     delete_sqListByindex(sq,3);
     show_seqList(sq);
     change_seqListByindex(sq,1,77);
     show_seqList(sq);
     inquire_seqListByindex(sq,0);
     show_seqList(sq);
 
 
 
     return 0;
 }
 

 

 


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值