#include <stdio.h>
#include <stdlib.h>
#include <string>
#define MAX 100
#define LISTINCREMENT 10
typedef int Status;
typedef int ElemType;
typedef struct{
ElemType *elem;
ElemType length;
ElemType listsize;
}SqList;//结构体
Status CreatList(SqList &L){//创建表
L.elem=(int*)malloc(MAX *sizeof(int));
printf("请输入表长:\n");
scanf("%d",&L.length);
printf("请输入%d个顺序表元素:\n",L.length);
for(int i=0;i<L.length;i++)
scanf("%d",&L.elem[i]);
}
Status Traverse(SqList L){//输出表中数据
printf("表中数据为:");
for(int i=0;i<L.length;i++){
printf("%d ",L.elem[i]);
}
}
Status LocateElem(SqList L,int e){
printf("输入查找的元素:");
scanf("%d",&e);
for(int i=0;i<L.length;i++){
if(L.elem[i]==e){
printf("查找成功,查找元素为%d,位于表中第%d位",L.elem[i],i+1);
printf("\n");
}
}
}
Status ListEmpty(SqList L){
return (L.length==0)?true:false;
}
int makesureElem(SqList L,int e){
int i;//确定要删除的元素
for(i=0;i<L.length;i++){
if(L.elem[i]==e){
printf("要删除的元素 位置为 %d",i+1);
printf("\n");
return (i+1);
}
}
printf("元素不存在");
printf("\n"); return 0;
}
Status ListDelete(SqList &L){
int i,e;
printf("输入要删除的元素");
scanf("%d",&e);
i=makesureElem(L,e);
if((i<1)||(i>L.length)) return 0;
else{
int *p,*q;
p=&(L.elem[i-1]);
e=*p;
q=L.elem+L.length-1;
for(++p;p<=q;++p)*(p-1)=*p;//被删除元素之后的元素左移
--L.length;
printf("元素被删除");
}
Traverse(L);
}
int main(){
SqList(L);
CreatList(L);
ListEmpty(L);
Traverse(L);
LocateElem(L,1);
ListDelete(L);
}
线性表操作的实现
猜你喜欢
转载自blog.csdn.net/perhamer/article/details/79805481
今日推荐
周排行