设为首页 加入收藏

TOP

顺序表
2014-11-23 23:21:00 来源: 作者: 【 】 浏览:1
Tags:顺序

#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 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.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 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);
}


作者“技术实验室”

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇vector模板类型?数据类型? 下一篇C语言中字符串的数组的定义实现

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: