#include"seqlist.h"
//函数功能:顺序表中查找值为e的元素位置 (定义变量法)
//输入参数L:顺序表
//输入参数e:要查找的元素
//返回值:若找到则返回顺序表中的位置(下标+1),否则返回-1
int Locate(SeqList L,ElemType e)
{
int i=0; /*i为扫描计数器,初值为0,即从第一个元素开始比较*/
while((i<=L.last)&&(L.elem[i]!=e)) /*顺序扫描表,直到找到值为key的元素, 或扫描到表尾而没找到*/
i++;
if(i<=L.last)
return(i+1); /*若找到值为e的元素,则返回其序号*/
else
return(-1); /*若没找到,则返回空序号*/
}
//在顺序表指定位置i处插入值e (指针变量法)
int InsList(SeqList *L, int i,ElemType e)
{
int k;
if(i<1||(i>L->last+2)) //首先判断插入位置是否合法
{
printf("插入位置i不合法");
return(ERROR);
}
if(L->last>=MAXSIZE-1) //判断线性表是否已满
{
printf("表已满,无法插入");
return(ERROR);
}
for(k=L->last;k>=i-1;k--) //为插入元素而移动位置
{
L->elem[k+1]=L->elem[k];
}
L->elem[i-1]=e; //C语言中数组第i个元素下标为i-1
L->last++; //尾指示器增加1
return(OK);
}
/*删除顺序表L中第i个数据元素,并用指针参数e返回其值*/
int DelList(SeqList *L,int i,ElemType *e)
{
int k;
if((i<1)||(i>L->last+1))
{
printf("删除位置不合法!");
return(ERROR);
}
*e= L->elem[i-1]; /* 将删除的元素存放到e所指向的变量中*/
for(k=i;k<=L->last;k++)
L->elem[k-1]= L->elem[k]; /*将后面的元素依次前移*/
L->last--;
return(OK);
}
//函数功能:输入顺序表的值
void SeqInput(SeqList *L)
{
int r,i;
printf("请输入元素个数(100以内):");
scanf("%d",&r);
L->last=-1; //线性表置空
printf("请输入线性表元素值,回车分隔:\n");
for(i=0;i<=r-1;i++)
{
scanf("%d",&L->elem[i]);
L->last++;
}
}
//函数功能:输出顺序表的值
void SeqPrint(SeqList *L)
{
printf("当前线性表中数据为:\n");
int i;
for(i=0;i<=L->last;i++)
printf("%d ",L->elem[i]);
printf("\n");
}
算法2.1-2.3Forlab.rar
需积分: 9 7 浏览量
2022-09-23
16:54:34
上传
评论
收藏 42KB RAR 举报
m0_69155340
- 粉丝: 0
- 资源: 1
评论0