定长顺序表的基本操作

定长顺序表

顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构。逻辑上是连续存储的,在物理空间上也是连续存储的。即物理相邻,逻辑相邻。顺序表又分为定长顺序表和不定长顺序表。
在这里插入图片描述

整体结构

SqeList.h代码的声明

typedef struct SqeList
{
 int arr[10];
 int cursize;
}SqeList,*List;

void init(List psel);
int full(List psel);        
int insert_back(List psel,int val);             
int insert_pos(List psel,int pos,int val);

int empty(List psel);
int delete_back(List psel);
int delete_pos(List psel,int pos);
int updete(List psel,int pos,int newval);
void Show(List psel);

代码实现

#include<stdio.h>
#include"SqeList.h"
//初始化
void init(List psel)
{
 (*psel).cursize=0;
 //psel->cursize=0;
}
//判满
int full(List psel)              //0  假 没满       1  真  满
{
 return psel->cursize==10;
}
//尾插
int insert_back(List psel,int val)                //0异常    1正常
{
 if(full(psel))
 {
  return 0;
 }
 psel->arr[psel->cursize]=val;
 psel->cursize++;
 return 1;
}
// 按位置增
int insert_pos(List psel,int pos,int val)
{
 int index=psel->cursize;
 if(full(psel))
 {
  return 0;
 }
 if(pos<0||pos<psel->cursize)
 {
  return -1;
 }
 for(index;index>pos;index--)
 {
  psel->arr[index]=psel->arr[index-1];
 }
 psel->arr[pos]=val;
 psel->cursize++;
 return 1;
}
//判空
int empty(List psel)
{
 return psel->cursize ==0;
}
//尾删
int delete_back(List psel)
{
 if(empty(psel))
 {
  return 0;
 }
 psel->cursize --;
 return 1;
}

//按位置删
int delete_pos(List psel,int pos)
{
 int index=pos;
 if(empty(psel))
 {
  return 0;
 }
 if(pos<0||pos>=psel->cursize )
 {
  return -1;
 }
 for(index; index<psel->cursize-1;index++)
 {
  psel->arr[index]=psel->arr[index+1];
 }
 psel->cursize--;
 return 1;
}

//修改元素值
int updete(List psel,int pos,int newval)
{
 if(pos<0||pos>=psel->cursize)
 {
  return -1;
 }
 psel->arr[pos]=newval;
 return 1;
}
//查找
void Show(List psel)
{
 int i=0;
 for(i;i<psel->cursize;i++)
 {
  printf("%d",psel->arr[i]);
 }
 printf("\n");
}

代码测试

main.cpp

#include<stdio.h>
#include"SqeList.h"

int main()
{
 int i=0;
 SqeList sl;
 init(&sl);
 for(i;i<5;i++)
 {
 	insertback(&sl,i+1);
 }
insert_pos(&sl,3,100);
 Show(&sl);
 for(i=0;i<3;i++)
 {
  delete_back(&sl);
 }
 delete_pos(&sl,0);
 Show(&sl);
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值