// 线性表的顺序存储结构!!!
#include
#include
#include
#define MaxSize 50
typedef struct{ // 定义结构体
int data[MaxSize];
int length;
}Sqlist;
void Init_List(Sqlist *L){ //初始化顺序表
L=(Sqlist *)malloc(sizeof(Sqlist));
L->length=0;
}
int Create_List(Sqlist *L,int a[],int y){ //创建顺序表
if (y>MaxSize)
{
printf_s("空间不够了!");
return 0;
}
int i=0,k=0;
while (i
printf("%dn",i);
L->data[k]=a[i];
k++;
i++;
}
L->length=k;
printf("创建成功!nn");
return 1;
}
int IsEmpty_List(Sqlist *L){ //判断顺序表是否为空表
if (L->length==0)
{
printf_s("是空表!");
return 0;
}
else{
printf_s("不是空表!");
return 1;
}
}
void Print_List(Sqlist *L){ // 打印输出表
for (int i = 0; i < L->length; i++)
{
printf("遍历的结果是:");
printf_s("%dn",L->data[i]);
}
}
void Length_List(Sqlist *L){ //输出表的长度
printf("顺序表长度:n");
printf_s("%dn",L->length);
}
int Select_Local_List(Sqlist *L,int x){ //x: 需要查找的逻辑位置序列
// 按位置查找表元素
if (x<1 || x>L->length)
{
printf("位置错误!");
return 0;
}
else{
int y;
y=L->data[x-1];
printf("查找的元素是:n");
printf_s("%d",y);
}
}
void Select_Value_List(Sqlist *L,int x){ //按值查找表元素
for (int i = 0; i < L->length; i++)
{
if (L->data[i]==x)
{
printf("你要找的元素的逻辑位置是:n");
printf_s("%dn",i+1);
}
}
}
int Insert_List(Sqlist *L,int y,int x){ //y: 插入的元素;x: 插入的位置
//插入表元素
if (x<1 || x>L->length)
{
printf("位置错误!");
return 0;
}
x--;
for(int j=L->length;j>x;j--){
L->data[j]=L->data[j-1];
}
L->data[x]=y;
L->length++;
return 1;
}
int Delete_List(Sqlist *L,int x){ //x: 删除位置;y: 负责将所删除的元素移除位置
//删除表元素
int y;
if (x<1 || x>L->length)
{
printf("位置错误!n");
return 0;
}
x--;
y=L->data[x];
for(int j=x;jlength-1;j++){
L->data[j]=L->data[j+1];
}
L->length--;
return 1;
}
int main(){
int a[5] = {1,2,3,4,5};
Sqlist list_1;
Init_List(&list_1); //初始化顺序表
if (IsEmpty_List(&list_1))
{
printf("初始化成功了!n");
}
printf("创建顺序表:n");
Create_List(&list_1,a,5); //创建长度为5的顺序表
// Insert_List(&list_1,100,3);
// Print_List(&list_1);
// printf("nn");
// Delete_List(&list_1,3);
// Print_List(&list_1);
Insert_List(&list_1,999,7);
Print_List(&list_1 );
}