线性表的顺序表示
线性表的顺序表示简称顺序表 ,逻辑上相邻的两个元素在物理位置上也相邻
业界函数命名规范:下划线命名法list_insert和驼峰命名法ListInsert
#include<iostream>
#define Maxsize 50
using namespace std;
typedef int elemtype;//让顺序表存储其他类型元素时,可以快速完成代码修改
typedef struct {
elemtype data[Maxsize];
int length ; // 当前顺序表有多少个元素
}Sqlist;
bool ListInsert(Sqlist &L,int pos,elemtype element)//为什么加引用因为L会改变
{
//判断插入位置是否合法
if(pos<1||pos>L.length+1)
{
return false;
}
//如果存储空间满了,不能插入
if(L.length==Maxsize)
{
return false;
}
int j;
//把后面的元素依次往后移动,空出位置,来放入要插入的元素
for(j=L.length;j>=pos;j--)
{
L.data[j]=L.data[j-1];
}
L.data[pos-1]=element;
L.length++;
return true;
}
void PrintList(Sqlist L)//不需要改变顺序表因此不需要加引用
{
for(int i=0;i<L.length;i++)
{
cout<<L.data[i]<<" ";
}
cout<<endl;
}
int main(){
Sqlist L;
bool ret; //ret用来装函数的返回值
L.data[0]=1;
L.data[1]=2;
L.data[2]=3;
L.data[3]=4;
L.length=4;
ret=ListInsert(L,9,89);
if(ret==true)
{
PrintList(L);
}
else
{
cout<<"插入失败"<<endl;
}
return 0;
}
线性表插入删除查找完整代码
#include<iostream>
#define Maxsize 50
using namespace std;
typedef int elemtype;//让顺序表存储其他类型元素时,可以快速完成代码修改
typedef struct {
elemtype data[Maxsize];
int length ; // 当前顺序表有多少个元素
}Sqlist;
bool DeleteList(Sqlist &L,int pos,elemtype &del)
{
//判断删除位置是否合法
if(pos<1||pos>L.length+1)
{
return false;
}
del=L.data[pos-1];
int j;
for(j=pos;j<L.length;j++)
{
L.data[j-1]=L.data[j];
}
L.length--;
return true;
//第二种写法
// for(j=pos-1;j<length-1;j++)
// {
// L.data[j]=L.data[j+1];
//
// }
//L.length--;
//return true;
}
bool ListInsert(Sqlist &L,int pos,elemtype element)//为什么加引用因为L会改变
{
//判断插入位置是否合法
if(pos<1||pos>L.length+1)
{
return false;
}
//如果存储空间满了,不能插入
if(L.length==Maxsize)
{
return false;
}
int j;
//把后面的元素依次往后移动,空出位置,来放入要插入的元素
for(j=L.length;j>=pos;j--)
{
L.data[j]=L.data[j-1];
}
L.data[pos-1]=element;
L.length++;
return true;
}
//查找某个元素的位置,找到了返回1 没找到返回0
int locateElem(Sqlist L,elemtype data){
int i;
for(int i=0;i<L.length-1;i++)
{
if(L.data[i]==data)
{
return i+1;
}
}
return 0;//循环结束没找到
}
void PrintList(Sqlist L)//不需要改变顺序表因此不需要加引用
{
for(int i=0;i<L.length;i++)
{
cout<<L.data[i]<<" ";
}
cout<<endl;
}
int main(){
Sqlist L;
bool ret; //ret用来装函数的返回值
L.data[0]=1;
L.data[1]=2;
L.data[2]=3;
L.data[3]=4;
L.length=4;
elemtype del;
//ret=ListInsert(L,9,89);
//ret=DeleteList(L,2,del);
int pos=locateElem(L,8);
cout<<pos<<endl;
// if(ret==true)
// {
// PrintList(L);
// }
// else
// {
// cout<<"插入失败"<<endl;
// }
// cout<<"删除的元素是"<<del<<endl;
return 0;
}