数据结构(算法)-线性表
/**
1,空的线性表setNull(L)
2,insert 加入元素
3,根据位置查找元素
4,查找所有元素
5,删除一个元素
*/
#include <iostream>
using namespace std;
#define MaxSize 50
typedef char ElemType;
struct List{
ElemType list[MaxSize];
int size;
};
void setNull(struct List *p){
p->size=0;
}
void insert(struct List *p , ElemType x , int i){
int j;
if(i<1 && i>p->size+1){
cout<<"超出线性表"<<endl;
}else{
p->size++;//长度加1
for(j=p->size-1 ; j>= i; j--){ //如果在前面加入
p->list[j]=p->list[j-1];//后移增加一个空间
}
p->list[j] = x;//数据加入增加的空间
}
}
void display(struct List *p ){
int j;
if(p->size==0){
cout<<"顺序表为空"<<endl;
}else{
cout<<"顺序表"<<endl;
if(p->size ==1){
cout<<p->list[p->size]<<endl;
}else{
for(j=0; j<p->size-1; j++){
printf("%c ->",p->list[j]);
}
printf("%c",p->list[j]);
}
printf("");
}
}
void del(struct List *p , int i){
int j;
if(i>p->size || i<1){
cout<<"超出线性表"<<endl;
}else{
for(j=i-1; j<p->size-1;j++){ //向前移一位
p->list[j]=p->list[j+1]; //后面覆盖前面
}
p->size--;//长度减一
}
}
void main(){
struct List L;
setNull(&L);
insert(&L,'a',1);
insert(&L,'b',2);
insert(&L,'a',1);
insert(&L,'c',2);
display(&L);
del(&L,2);
display(&L);
del(&L,2);
display(&L);
}