1、顺序表的基本操作
使用软件:vs code
基本操作:
- InitList(SqList *L);//初始化
- Length(SqList &L);//求表长
- ListInsert(SqList &L,int i,Elemtype e);//插入操作
- ListDelete(SqList &L,int i,Elemtype e);//删除操作
- LocateElem(SqList &L,Elemtype e);//按值查找
- GetElem(SqList &L,int i);//按位查找
-
PrintfList(SqList L);//输出操作
1.1定义顺序表
#define Maxsize 50 //定义线性表的最大长度
typedef struct SqList
{
Elemtype data[Maxsize];//顺序表的元素
int length; //顺序表的长度
}SqList; //顺表表的类型定义
1.2初始化顺序表
Status InitList(SqList *L)
{
printf("初始化:************************************\n");
L->length=0;
printf("初始化完成\n");
return 1;
}
1.3插入操作
Status ListInsert(SqList &L,int i,Elemtype e)
{
printf("插入操作:************************************\n");
printf("在第%d位,插入%d\n",i,e);
if (i<1||i>L.length+1)
{
printf("插入失败\n");
return false; //判断输入i的范围是否有效
}
if (L.length>=Maxsize)
{
printf("插入失败\n");
return false; //判断表是否满
}
for (int j=L.length;j>=i;j--)
{
L.data[j]==L.data[j-1]; //将第i个元素及之后的元素后移
}
L.data[i-1]=e; //在位置i上加入e值
L.length++; //线性表长度加1
printf("插入成功\n");
return true;
}
1.4删除操作
Status ListDelete(SqList &L,int i,Elemtype e)
{
printf("删除操作:************************************\n");
if (i<1||i>L.length) //判断i的范围是否有效
{
return false;
}
if (L.length>=Maxsize)
{
return false;
}
for (int j = i; j < L.length; j++)
{
L.data[j-1]=L.data[j]; //将第i个位置后元素前移
}
L.length--; //线性表长度减1
return true;
}
1.5按值查找
Status LocateElem(SqList &L,Elemtype e)
{
printf("按值查找操作:************************************\n");
printf("和%d相同的值的位置为:\n",e);
for (int i = 0; i < L.length; i++)
{
if (L.data[i]==e)
{
printf("data[%d]\n",i+1);
}
}
return 1;
}
1.6按位查找
Status GetElem(SqList &L,int i)
{
printf("按位查找:************************************\n");
printf("第%d位的值是%d:\n",i,L.data[i-1]);
return 1;
}
1.7输出操作
void PrintfList(SqList L)
{
printf("输出操作:************************************\n");
printf("data中\n");
for (int i = 0; i < L.length; i++)
printf("data[%d] = %d ", i, L.data[i]);
printf("\n线性表的长度为 %d \n", L.length);
return;
}
2、代码
(要是在自己的电脑上运行请先创建一个以(.cpp)为后缀的文件然后再复制下面代码)
#include<stdio.h>
#include <cstring>
#include <iostream>
#include <iomanip>
#define Maxsize 50
#define Status int
#define Elemtype int
typedef struct SqList
{
Elemtype data[Maxsize];
int length;
/* data */
}SqList;
Status InitList(SqList *L);//初始化
Status Length(SqList &L);//求表长
Status ListInsert(SqList &L,int i,Elemtype e);//插入操作
Status ListDelete(SqList &L,int i,Elemtype e);//删除操作
Status LocateElem(SqList &L,Elemtype e);//按值查找
Status GetElem(SqList &L,int i);//按位查找
void PrintfList(SqList L);
int main()
{
SqList L;
InitList(&L);
Length(L);
ListInsert(L, 1, 0);
ListInsert(L, 2, 1);
ListInsert(L, 3, 2);
ListInsert(L, 4, 1);
ListDelete(L, 2, 1);
LocateElem(L,1);
GetElem(L, 1);
PrintfList(L);
system("pause");
}
//初始化
Status InitList(SqList *L)
{
printf("初始化:************************************\n");
L->length=0;
printf("初始化完成\n");
return 1;
}
//求表长
Status Length(SqList &L)
{
printf("求表长:************************************\n");
printf("%d\n",L.length);
return 1;
}
//插入操作
Status ListInsert(SqList &L,int i,Elemtype e)
{
printf("插入操作:************************************\n");
printf("在第%d位,插入%d\n",i,e);
if (i<1||i>L.length+1)
{
printf("插入失败\n");
return false; //判断输入i的范围是否有效
/* code */
}
if (L.length>=Maxsize)
{
printf("插入失败\n");
return false; //判断表是否满
/* code */
}
for (int j=L.length;j>=i;j--)
{
L.data[j]==L.data[j-1];
/* code */
}
L.data[i-1]=e;
L.length++;
printf("插入成功\n");
return true;
}
//输出操作
void PrintfList(SqList L)
{
printf("输出操作:************************************\n");
printf("data中\n");
for (int i = 0; i < L.length; i++)
printf("data[%d] = %d ", i, L.data[i]);
printf("\n线性表的长度为 %d \n", L.length);
return;
}
//删除操作
Status ListDelete(SqList &L,int i,Elemtype e)
{
printf("删除操作:************************************\n");
if (i<1||i>L.length)
{
return false;
/* code */
}
if (L.length>=Maxsize)
{
return false;
/* code */
}
for (int j = i; j < L.length; j++)
{
L.data[j-1]=L.data[j];
/* code */
}
L.length--;
return true;
}
//按值查找
Status LocateElem(SqList &L,Elemtype e)
{
printf("按值查找操作:************************************\n");
printf("和%d相同的值的位置为:\n",e);
for (int i = 0; i < L.length; i++)
{
if (L.data[i]==e)
{
printf("data[%d]\n",i+1);
/* code */
}
}
return 1;
}
//按位查找
Status GetElem(SqList &L,int i)
{
printf("按位查找:************************************\n");
printf("第%d位的值是%d:\n",i,L.data[i-1]);
return 1;
}
3、运行结果