(第三周项目2)建设“顺序表”算法库
2016-09-13 13:51
447 查看
/* *Copyright(c)2016,烟台大学计算机与控制工程学院 *文件名称:main.cpp *作者:黄玉娇 *完成日期:2016年9月13日 *版本号:v1.0 * *问题描述:测试“建立线性表”的算法CreateList, 实现“输出线性表”的算法DispList。 实现判断线性表是否为空的算法ListEmpty 增加求线性表的长度ListLength的函数并测试; 增加求线性表L中指定位置的某个数据元素GetElem的函数并测试; 增加查找元素LocateElem的函数并测试; 插入数据元素ListInsert; 删除数据元素ListDelete; 初始化线性表InitList; 销毁线性表DestroyList; 采用多文件的形式。 * *输入描述:输入你要查找的元素和你要查找的位置 *程序输出:给出所查找的数据元素的位置,以及给出的位置的元素 */
list.h
#ifndefLIST_H_INCLUDED
#defineLIST_H_INCLUDED
#defineMaxSize50
typedefintElemType;
typedefstruct
{
ElemTypedata[MaxSize];
intlength;
}SqList;
voidCreateList(SqList*&L,ElemTypea[],intn);//用数组创建线性表
voidInitList(SqList*&L);//初始化线性表InitList(L)
voidDestroyList(SqList*&L);//销毁线性表DestroyList(L)
boolListEmpty(SqList*L);//判定是否为空表ListEmpty(L)
intListLength(SqList*L);//求线性表的长度ListLength(L)
voidDispList(SqList*L);//输出线性表DispList(L)
boolGetElem(SqList*L,inti,ElemType&e);//求某个数据元素值GetElem(L,i,e)
intLocateElem(SqList*L,ElemTypee);//按元素值查找LocateElem(L,e)
boolListInsert(SqList*&L,inti,ElemTypee);//插入数据元素ListInsert(L,i,e)
boolListDelete(SqList*&L,inti,ElemType&e);//删除数据元素ListDelete(L,i,e)#endif//LIST_H_INCLUDED
#endif
list.cpp
#include<stdio.h>
#include<malloc.h>
#include"list.h"
//用数组创建线性表
voidCreateList(SqList*&L,ElemTypea[],intn)
{
inti;
L=(SqList*)malloc(sizeof(SqList));
for(i=0;i<n;i++)
L->data[i]=a[i];
L->length=n;
}
//初始化线性表InitList(L)
voidInitList(SqList*&L)//引用型指针
{
L=(SqList*)malloc(sizeof(SqList));
//分配存放线性表的空间
L->length=0;
}
//销毁线性表DestroyList(L)
voidDestroyList(SqList*&L)
{
free(L);
}
//判定是否为空表ListEmpty(L)
boolListEmpty(SqList*L)
{
return(L->length==0);
}
//求线性表的长度ListLength(L)
intListLength(SqList*L)
{
return(L->length);
}
//输出线性表DispList(L)
voidDispList(SqList*L)
{
inti;
if(ListEmpty(L))return;
for(i=0;i<L->length;i++)
printf("%d",L->data[i]);
printf("\n");
}
//求某个数据元素值GetElem(L,i,e)
boolGetElem(SqList*L,inti,ElemType&e)
{
if(i<1||i>L->length)returnfalse;
e=L->data[i-1];
returntrue;
}
//按元素值查找LocateElem(L,e)
intLocateElem(SqList*L,ElemTypee)
{
inti=0;
while(i<L->length&&L->data[i]!=e)i++;
if(i>=L->length)return0;
elsereturni+1;
}
//插入数据元素ListInsert(L,i,e)
boolListInsert(SqList*&L,inti,ElemTypee)
{
intj;
if(i<1||i>L->length+1)
returnfalse;//参数错误时返回false
i--;//将顺序表逻辑序号转化为物理序号
for(j=L->length;j>i;j--)//将data[i..n]元素后移一个位置
L->data[j]=L->data[j-1];
L->data[i]=e;//插入元素e
L->length++;//顺序表长度增1
returntrue;//成功插入返回true
}
//删除数据元素ListDelete(L,i,e)
boolListDelete(SqList*&L,inti,ElemType&e)
{
intj;
if(i<1||i>L->length)//参数错误时返回false
returnfalse;
i--;//将顺序表逻辑序号转化为物理序号
e=L->data[i];
for(j=i;j<L->length-1;j++)//将data[i..n-1]元素前移
L->data[j]=L->data[j+1];
L->length--;//顺序表长度减1
returntrue;//成功删除返回true
}
设计main.cpp用于测试:
main.cpp:
#include"list.h"
intmain()
{
SqList*sq;
ElemTypex[6]={5,8,7,2,4,9};
CreateList(sq,x,6);
DispList(sq);
return0;
}
运行结果:
知识点总结:
顺序表的基本运算
学习心得:
对顺序表的学习有待加强!
相关文章推荐
- 第三周项目2 建设“顺序表”算法库
- (第三周项目2)建设“顺序表”算法库
- 第三周项目2 建设“顺序表”算法库
- 第三周项目二 建设”顺序表“算法库
- 第三周 项目2-建设“顺序表”算法库
- 第三周项目2-建设“顺序表”算法库
- 第三周项目2-建设“顺序表”算法库
- 第三周 项目2 建设“顺序表”算法库
- 第三周项目2-建设“顺序表”算法库
- 第三周项目2-建设“顺序表”算法库
- 第三周——【项目2 - 建设“顺序表”算法库】
- 第三周项目二 建设“顺序表”的算法库
- 第三周上机实践—项目2 —建设“顺序表”算法库
- 第三周项目2——建设“顺序表”算法库
- 第三周——项目2建设“顺序表”算法库
- 第三周 项目2 建设“顺序表”算法库
- 第三周项目2-建设“顺序表”算法库
- 第三周实践项目2--建设“顺序表”算法库
- 第三周—项目2 建设“顺序表”算法库
- 第三周项目2-建设“顺序表”算法库