定长顺序表
顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构。逻辑上是连续存储的,在物理空间上也是连续存储的。即物理相邻,逻辑相邻。顺序表又分为定长顺序表和不定长顺序表。
整体结构
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);
}