#include<stdio.h>
#define MaxSize 10//定义最大的长度
typedef struct{
int data[MaxSize];//用"静态的数组"来存放数据元素
int length;//顺序表的当前长度
}SqList;//顺序表的类型定义
//初始化一个顺序表
void InitList(SqList &L){
for(int i=0;i<MaxSize;i++){
L.data[i]=0;//将顺序表的默认元素值设为0
}
L.length=0;//顺序表的初始长度为0
}
int main(){
SqList L;//声明一个顺序表
InitList(L);//初始化顺序表
for(int i=0;i<MaxSize;i++){
printf("%d\n",L.data[i]);
}
printf("长度为%d\n",L.length);
return 0;
}
添加插入功能
bool ListInsert(SqlList &L,int i,int e){//插入元素
if(i<1||i>L.length+1){//判断i的范围是否是有效
return false;
}
if(L.length>=MaxSize){//当前存储空间已经满了,就不能再插入
return false;
}
for(int j=L.length;j>=i;j--){//将第i个元素及之后的元素后移
L.data[j]=L.data[j-1];
}
L.data[i-1]=e;//在位置i处放入e
L.length++;//长度加1
return true;
}
添加删除功能
bool ListDelete(SqlList &L,int i,int &e){//顺序表的删除操作
if(i<1||i>L.length){//判断i的范围是否有效
return false;
}
e=L.data[i-1];//将被删除的元素赋值给e
for(int j=i;j<L.length;j++){//将第i个位置后的元素前移
L.data[j-1]=L.data[j];
}
L.data[L.length-1]=0;//将最后一位的元素设为0
L.length--;//线性表的长度减一
return true;
}
插入删除代码综合
#include<stdio.h>
#define MaxSize 10
typedef struct{
int length;
int data[MaxSize];
}SqlList;
void initList(SqlList &L){//初始化顺序表
for(int i=0;i<MaxSize;i++){
L.data[i]=0;
}
L.length=0;
}
bool ListInsert(SqlList &L,int i,int e){//插入元素
if(i<1||i>L.length+1){//判断i的范围是否是有效
return false;
}
if(L.length>=MaxSize){//当前存储空间已经满了,就不能再插入
return false;
}
for(int j=L.length;j>=i;j--){//将第i个元素及之后的元素后移
L.data[j]=L.data[j-1];
}
L.data[i-1]=e;//在位置i处放入e
L.length++;//长度加1
return true;
}
void DataAndLength(SqlList &L){//输出当前所有元素及长度
for(int i=0;i<MaxSize;i++){
printf("%d ",L.data[i]);
}
printf("长度为%d\n",L.length);
}
bool ListDelete(SqlList &L,int i,int &e){//顺序表的删除操作
if(i<1||i>L.length){//判断i的范围是否有效
return false;
}
e=L.data[i-1];//将被删除的元素赋值给e
for(int j=i;j<L.length;j++){//将第i个位置后的元素前移
L.data[j-1]=L.data[j];
}
L.data[L.length-1]=0;//将最后一位的元素设为0
L.length--;//线性表的长度减一
return true;
}
int main(){
SqlList L;
initList(L);
DataAndLength(L);
ListInsert(L,1,1);
ListInsert(L,2,2);
ListInsert(L,3,3);
ListInsert(L,4,5);
DataAndLength(L);
ListInsert(L,4,4);
DataAndLength(L);
int e=-1;
if(ListDelete(L,3,e)){
printf("已删除第三个元素,删除的元素值为=%d\n",e);
}else{
printf("位序i不合法,删除失败\n");
}
DataAndLength(L);
return 0;
}
添加查询功能
int LocateElem(SqlList L,int e){
int i;
for(i=0;L.length;i++){
if(L.data[i]==e){
// printf("%d",i+1);
return i+1;
}
}
return 0;
}
综合
#include<stdio.h>
#define MaxSize 10
typedef struct{
int *e;
int length;
int data[MaxSize];
}SqlList;
void initList(SqlList &L){//初始化顺序表
for(int i=0;i<MaxSize;i++){
L.data[i]=0;
}
L.length=0;
}
bool ListInsert(SqlList &L,int i,int e){//插入元素
if(i<1||i>L.length+1){//判断i的范围是否是有效
return false;
}
if(L.length>=MaxSize){//当前存储空间已经满了,就不能再插入
return false;
}
for(int j=L.length;j>=i;j--){//将第i个元素及之后的元素后移
L.data[j]=L.data[j-1];
}
L.data[i-1]=e;//在位置i处放入e
L.length++;//长度加1
return true;
}
void DataAndLength(SqlList &L){//输出当前所有元素及长度
for(int i=0;i<MaxSize;i++){
printf("%d ",L.data[i]);
}
printf("长度为%d\n",L.length);
}
bool ListDelete(SqlList &L,int i,int &e){//顺序表的删除操作
if(i<1||i>L.length){//判断i的范围是否有效
return false;
}
e=L.data[i-1];//将被删除的元素赋值给e
for(int j=i;j<L.length;j++){//将第i个位置后的元素前移
L.data[j-1]=L.data[j];
}
L.data[L.length-1]=0;//将最后一位的元素设为0
L.length--;//线性表的长度减一
return true;
}
int LocateElem(SqlList L,int e){
int i;
for(i=0;L.length;i++){
if(L.data[i]==e){
// printf("%d",i+1);
return i+1;
}
}
return 0;
}
int main(){
SqlList L;
initList(L);
DataAndLength(L);
ListInsert(L,1,1);
ListInsert(L,2,2);
ListInsert(L,3,3);
ListInsert(L,4,5);
DataAndLength(L);
ListInsert(L,4,4);
DataAndLength(L);
int e=-1;
if(ListDelete(L,3,e)){
printf("已删除第三个元素,删除的元素值为=%d\n",e);
}else{
printf("位序i不合法,删除失败\n");
}
DataAndLength(L);
e=2;
int sum=LocateElem(L,e);
printf("%d",sum);
return 0;
}