顺序表
#include "stdio.h"
#include "stdlib.h" //该头文件包含了realloc()函数、exit
#define List_Size 100
/**
**宏定义
*/
#define ListIncrement 10
#define OK 1
#define ERROR 0
#define OVERFLOW -1
/**
*typedef 声明自定义数据类型
*/
typedef int ElemType;
typedef struct{
ElemType *elem;
int length;
int listsize;
}SqList;
int InitSqList(SqList &L){//顺序表的初始化
L.elem=new ElemType[List_Size];
if(!L.elem) exit(OVERFLOW);
L.length=0;
L.listsize=List_Size;
return OK;
}
void CreateSqList(SqList &L,int n){//建立顺序表
int i;
for(i=0;i<n;i++){
scanf("%d",&L.elem[i]);
L.length++;
}
}
void DeastroySqList(SqList &L){//销毁顺序表,释放内存空间
delete L.elem;
}
int SqListInsert(SqList &L,int i,ElemType x){//插入操作 ///算法是比较重要的
int j;
ElemType *p;
if(i<1||i>L.length+1) return ERROR;
if(L.length>=L.listsize){
p=(ElemType*)realloc(L.elem,(L.listsize+ListIncrement)*sizeof(ElemType));
if(!p) exit(OVERFLOW);
L.elem=p;
L.listsize=L.listsize+ListIncrement;
}
for(j=L.length-1;j>=i-1;j--)
L.elem[j+1]=L.elem[j];
L.elem[i-1]=x;
++L.length;
return OK;
}
int SqListDelete(SqList &L,int i){//删除操作
int j;
if(i<1||i>L.length) return ERROR;
for(j=i-1;j<L.length-1;j++)
L.elem[j]=L.elem[j+1];
L.length--;
return OK;
}
int LocateElem(SqList L,ElemType x){//按值查找
int i=1;
while(i<=L.length&&L.elem[i-1]!=x) i++;
if(i<=L.length) return i;
else return ERROR;
}
void DispSqList(SqList L){//依次输出线性表中的所有元素
int i;
for(i=0;i<L.length;i++)
printf("%d\t",L.elem[i]);
printf("\n");
}
void main(){
SqList L;
int i;
ElemType x;
InitSqList(L);//……
printf("please input some messages!!!\n");
CreateSqList(L,5);
printf("Data to be showed!!!\n");
DispSqList(L);
printf("请输入要插入的数:\n");
scanf("%d",&x);
printf("请输入要插入位置:\n");
scanf("%d",&i);
while(!SqListInsert(L,i,x)){
printf("插入位置越界!!!请输入正确的插入位置:\n");
scanf("%d",&i);
}
printf("插入成功!!!\n");
DispSqList(L);
printf("请输入删除数的位置:\n");
scanf("%d",&x);
while(!SqListDelete(L,x)){
printf("删除位置越界!!!请输入正确的删除数的位置:\n");
scanf("%d",&x);
}
printf("删除成功!!!\n");
DispSqList(L);
printf("请输入要查找的数:");
scanf("%d",&x);
if(!LocateElem(L,x)){
printf("没有你要查找的数!!!");
}else{
printf("已查到你要找的数!!!\n");
printf("该数在线性表中的位置:");
printf("%d\n",LocateElem(L,x));
}
DeastroySqList(L);
}
作者“技术实验室”
补充:软件开发 , C语言 ,