顺序表的基本操作
程序员文章站
2024-03-20 14:20:22
...
//顺序表
#include<stdio.h>
#define MAXLEN 100
typedef struct slist
{
int num[MAXLEN];
int listlen;//定义表的长度
} list;
void initlist(list *l);//初始化线性表
int listlength(list *l);//求表的长度
int getelement(list *l,int i,int *x);//按照序号求元素运算的实现
int serachelement(list *l,int x);//查找元素 位置
int listinsert(list *l,int x,int i);//插入元素
int deletelist(list *l,int i);//删除元素
int main(void)
{
return 0;
}
void initlist(list *l)//初始化线性表
{
l->listlen = 0;
}
int listlength(list *l)
{
return l->listlen ;
}
int getelement(list *l,int i,int *x)
{
if(i < 1 || i > l->listlen )
{
return 0;
}
else
{
*x = l->num [i - 1];//注意序号与下标之间的和关系
return *x;
}
}
int serachelement(list *l,int x)//查找元素位置
{
int i;
for(i = 0; i < l->listlen; i++)
{
if(l->num [i] == x)
{
return i + 1;
}
}
return 0;
}
int listinsert(list *l,int x,int i)//插入元素
{
int j;
if(l->listlen == MAXLEN)
{
return 0;
}
else if(i < 1 || i > l->listlen + 1)
{
return 0;
}
else
{
for(j = l->listlen -1; j >= i - 1; j--)//插入运算是从后往前移
{
l->num [j + 1] = l->num [j];//l->num[i] = l->num[i - 1] 腾出位置 开始插入
}
l->num [i - 1] = x;//插入
l->listlen ++;//修改表的长度
return 1;
}
}
int deletelist(list *l,int i)//删除元素,
{
int j;
if(l->listlen <= 0)
{
return 0;
}
else if(i < 1 || i > l->listlen)
{
return 1;
}
else
{
for(j = i; j < l->listlen ; j++)//删除运算 从带删除位置从后往前移
{
l->num [j - 1] = l->num [j];
}
l->listlen --;//修改表的长度
return 1;
}
}
上一篇: 顺序表的基本操作
下一篇: 关于Java的Cookie操作