线性表顺序存储结构操作算法
**
- 顺序表的初始化
- 线性表的插入算法
- 线性表的删除算法
- 线性表的查找算法**
根据书本的知识线性表顺序存储结构的操作算法其实是我们刚进入数据结构与算法的必修课
其实算法无法就是怎么解决的思路,更快的思路罢了!
下面开始讲解
1.顺序表的初始化
typedef struct{
DataType list[MAXSIZE];/*数组*/
int length;/*元素的个数*/
}Sqlist;
Sqlist *init_Sqlist(){
Sqlist *L; //表示定义了一个指向Sqlist的指针
L = malloc(sizeof(Sqlist)); //开拓一块内存
L->length=0;
return L;
}
L=init_Sqlist();
2.插入算法
int ChaRu(Sqlist *L,int i,DataType x)
{
int j;
if(L->length==MAXSIZE)
{
printf("表满,不能进行插入");
return -1;
}
if(i<1||i>L->length+1)
{
printf("插入非法位置");
return 0;
}
for(j=L->length;j>=i;j--)
{
L->list[j+1]=L->list[j]; //依次往后赋值,空出一个位置
}
L->list[i]=x;
L->length++; //因为插入了一个元素,所以要加一个长度单位
}
CharRu(L,3,10); // 在i=3的位置插入10
3.删除算法
void ShanChu(Sqlist *L,int i)
{
int j;
if(L->length==0){
printf("表空,不能进行删除");
}
if(i<1||i>L->length){
printf("删除的位置不正确");
}
for(j=i+1;j<=L->length;j++){
L->list[j-1]=L->list[j]; //同上
}
L->length--;
}
ShanChu(L,3); // 删除i=3的位置
4.线性表的查找
int ChaZhao(Sqlist *L,DataType x){
int i=L->length;
while(i>0){
if(L->list[i]==x) return i
i--;
}
if(i==0) return -1;
}
ChaZhao(L,9);
typedef用法
typedef int DataType; 意思是给DataType 赋值上int整型元素
为什么是typedef struct{
DataType list[MAXSIZE];/*数组*/
int length;/*元素的个数*/
}
因为这个struct里面有DataType