选用C++编译器
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 10
typedef struct SqList{
int* data;
int lenth;
int maxSize;
/*
初始化顺序表
*/
void initList(){
this->lenth=0;
this->maxSize = MAXSIZE;
int max_size = MAXSIZE;
this->data = (int *)malloc(MAXSIZE*sizeof(int));
for(int i=0;i<max_size;i++){
this->data[i] = 0;
}
}
/*
向顺序表中指定位置插入值
int index:下标 从0开始
*/
void insert(int index,int e){
if(index<0||index>this->lenth){
printf("fail:index:%d out of list",index);
return;
}
for(int i=this->lenth;i>index;i--){
this->data[i] = this->data[i-1];
}
this->data[index] = e;
this->lenth++;
}
/*
向顺序表尾部添加元素
*/
void append(int e){
if(this->lenth>this->maxSize){
printf("fail:this List is full,can not append");
return;
}
this->insert(this->lenth,e);
}
/*
获取顺序表中指定位置元素值
*/
int getElem(int index){
if(index<0||index>=this->lenth){
printf("fail:index:%d out of list",index);
return -999999;
}
return this->data[index];
}
/*
删除指定位置的元素
int index:要删除元素的下标 从0开始
*/
int deleteElement(int index){
if(index<0||index>=this->lenth){
printf("fail:index:%d out of list",index);
return -999999;
}
int target = this->data[index];
for(int i=index;i<this->lenth;i++){
this->data[i] = this->data[i+1];
}
this->lenth--;
return target;
}
/*
修改顺序表中指定位置元素值
*/
int update(int index,int e){
int old = this->data[index];
this->data[index] = e;
return old;
}
/*
查找指定元素在顺序表中的位置
*/
int indexOf(int value){
for(int i=0;i<this->lenth;i++){
if(this->data[i]==value){
return i;
}
}
return -1;
}
/*
获取当前顺序表中元素个数
*/
int getLenth(){
return this->lenth;
}
/*
判断当前顺序表是否为空
*/
bool isEmpty(){
return this->lenth==0?true:false;
}
/*
回收顺序表
*/
void destory(){
free(this->data);
this->lenth = 0;
}
/*
打印顺序表中所有元素
*/
void printList(){
int lenth = this->lenth;
for(int i=0;i<lenth;i++){
printf("%d ",this->data[i]);
}
printf("\n");
}
}SqList;
int main(){
SqList sqlist;
sqlist.initList();
for(int i=0;i<10;i++){
sqlist.append(i);
}
sqlist.printList();
printf("sqlist:lenth=%d",sqlist.lenth);
for(int i=4;i>=0;i--){
printf("data[%d]=%d\n",i,sqlist.getElem(i));
}
sqlist.getElem(5);
sqlist.insert(5,5);
sqlist.deleteElement(5);
sqlist.update(5,10);
printf("5 in sqlist index=%d",sqlist.indexOf(5));
sqlist.printList();
sqlist.destory();
sqlist.printList();
return 0;
}