#include <stdio.h>
#include <stdlib.h>
#include<bits/stdc++.h>
using namespace std;
#define MAXSIZE 10
#define initsize 10
typedef struct{ //顺序表的建立
int *data;
int length;
int maxsize;
}SqList;
void InitList(SqList &L) //动态初始化顺序表
{
L.data=(int *)malloc(sizeof(int)*initsize);
L.length=0;
L.maxsize=initsize;
cout<<"初始化成功"<<endl;
}
void IncreaseSize(SqList &L,int len) //增加顺序表的容量
{
int *p=L.data;
L.data=(int *)malloc(sizeof(int)*(initsize+len));
cout<<"扩容成功"<<endl;
for(int i=0;i<L.length;i++)
{
L.data[i]=p[i];
}
L.maxsize=L.maxsize+len;
free(p);
}
bool ListInsert(SqList &L,int i,int e) //顺序表插入操作 i为序号从1开始
{
if(i<1||i>L.length)
return false; //超出范围
for(int j=L.length;j>=i;j--)
{
L.data[j]=L.data[j-1];
}
L.data[i-1]=e;
L.length++;
cout<<"插入成功"<<endl;
return true;
}
bool ListDelete(SqList &L,int i,int &e) //顺序表删除操作 i为序号从1开始 并将删除元素的值返回到e
{
e=L.data[i-1]; //返回删除值
if(i<1||i>L.length)
return false; //超出范围
for(int j=i-1;j<L.length;j++)
{
L.data[j]=L.data[j+1];
}
L.length--;
cout<<"删除成功,已删除第"<<i<<"个元素"<<endl;
return true;
}
int GetElem(SqList L,int i) //顺序表查找操作:按位置查找 i为序号从1开始
{
if(i<1||i>L.length)
return 0; //超出范围
cout<<"查找成功"<<endl;
return L.data[i-1];
}
int LocateElem(SqList L,int key) //顺序表查找操作:按数值查找 i为序号从1开始
{
for(int i=0;i<L.length;i++)
{
if(L.data[i]==key)
{
cout<<"查找成功"<<endl;
return i+1; //返回序号(从1开始)
}
}
return 0; //查找失败
}
main()
{
SqList L;
int e=-1;
InitList(L);
L.length=10;
IncreaseSize(L,1);
ListInsert(L,1,2);
cout<<"a[0]:"<<L.data[0]<<endl;
e=GetElem(L,3);
cout<<"e:"<<e<<endl;
cout<<"maxsize:"<<L.maxsize<<endl;
int x=LocateElem(L,2);
}
数据结构2.1-顺序表的建立和使用
最新推荐文章于 2022-07-11 19:15:02 发布