线性表的顺序表示、基础操作
1:初始化操作
2:插入操作
3:删除操作
4:按值查找操作
线性表代码没有标准代码,只要实现功能就行,能出来效果,效果正确就可以。代码可直接运行,并出来相应的效果
代码用C语言实现
#include <stdio.h>
#define OK 1
#define ERROR 0
#define MaxSize 150
typedef int ElemType;
typedef struct
{
ElemType data[MaxSize];
int lenght;
}List;
/*初始化线性表,线性表长度等于0*/
void InitList(List *L)
{
L->lenght=0;
}
/*插入操作*/
int InsertList(List *L,int i,ElemType e)
{
if(L->lenght==MaxSize) //判断线性表是否已满
return ERROR;
if(i<1 || i>L->lenght+1) //判断插入数据位置是否合法
return ERROR;
for( int j=L->lenght ; j>=i ; j--)
L->data[j] = L->data[j-1];
L->data[i-1]=e;
L->lenght++;
return OK;
}
/*结点删除操作*/
int DeleteList(List *L,int i,ElemType *e)
{
if(i<1||i>L->lenght)
return ERROR; //判断删除位置是否合法
*e = L->data[i-1];
for(int j=i ; j<L->lenght ; j++)
L->data[j-1]=L->data[j];
L->lenght--;
return OK;
}
/*按值查找,返回第一个和e相等元素的位置,0为不存在,上同*/
int SelectList(List *L,ElemType e)
{
for(int i=0; i<L->lenght;i++ )
{
if(L->data[i]==e)
return i+1;
}
return ERROR;
}
/*运行效果*/
int main(void)
{
List L;
InitList(&L);
for(int i=0;i<10;i++)
{
L.data[i]=i;
L.lenght++;
printf("%d %d\n",L.data[i],L.lenght);
}
printf("进行插入操作前数据位置---------\n");
InsertList(&L,6,666);
for(int i=0;i<=L.lenght-1;i++)
{
printf("%d %d\n",L.data[i],L.lenght);
}
printf("进行删除操作前数据位置---------\n");
int NoDelete;
DeleteList(&L,6,&NoDelete);
for(int i=0;i<=L.lenght-1;i++)
{
printf("%d %d\n",L.data[i],L.lenght);
}
printf("进行删除操作删除的数据元素 %d\n",NoDelete);
int e = 9;
int Noaddress = SelectList(&L,e);
printf("要查找的元素 %d 在线性表的第 %d 位\n",e,Noaddress);
return OK;
}