#include <iostream>
#include <stdio.h>
using namespace std;
#define InitSize 100 //定义线性表初始长度
#define MAXSIZE 50 //定义线性表的最大长度
typedef struct{ //定义顺序表数据类型
int data[MAXSIZE]; //顺序表的元素
int length; //顺序表的当前长度
}SqList; //静态顺序表
typedef struct{
int *data; //只是动态分配数组的指针
int MaxSize, length; //数据数组的最大容量和当前长度
}SqList1;
bool ListInesrt(SqList &L,int i,int e){
if(i<1||i>L.length+1)
return false;
if(L.length >= MAXSIZE)
return false;
for(int j=L.length;j>i-1;j--)
L.data[j]=L.data[j-1];
L.data[i-1]=e;
L.length++;
return true;
}
void ListInit(SqList &L){
int i,temp;
L.length = 0;
for(i=0;i<MAXSIZE;i++){
scanf("%d",&temp);
if(temp!=-1){
L.data[i] = temp;
L.length++;
}
else
break;
}
return;
}
bool ListDelete(SqList &L,int i,int &e){
if(i<1||i>L.length)
return false;
e=L.data[i-1];
for(int j=i-1;j<L.length-1;j++)
L.data[j] = L.data[j+1];
L.length--;
return true;
}
int LocateElem(SqList L,int e){
for(int i=0;i<L.length;i++){
if(L.data[i]==e){
return i+1;
}
}
return -1;
}
void Output(SqList L){
int i;
for(i=0;i<L.length;i++)
printf("%d ",L.data[i]);
printf("len:%d \n",L.length);
}
int main()
{
int e,i;
printf("输入数据,以-1结束:\n");
SqList L;
ListInit(L);
printf("输入插入位置i[0<i<=%d]:\n",L.length);
scanf("%d",&i);
printf("输入插入元素的值:\n");
scanf("%d",&e);
ListInesrt(L,i,e);
Output(L);
printf("删除第几个元素?[0<i<=%d]\n",L.length);
scanf("%d",&i);
printf("删除第%d个元素,其值返回给e:\n",i);
ListDelete(L,i,e);
printf("e=%d\n",e);
Output(L);
printf("输入要查找的值:\n");
scanf("%d",&e);
printf("按值查找(未找到返回-1):\n");
printf("第一个值为%d的元素位于第[%d]位",e,LocateElem(L,e));
}
参考:王道考研数据结构指导