数据结构课后实验源代码.docx
数据结构课后实验源代码
实验1:线性表的实现(顺序表)
```
#includeiostream
usingnamespacestd;
constintMAXSIZE=100;
typedefstruct
{
int*data;//指向线性表的指针
intlength;//线性表当前长度
}SqList;
boolInitList(SqListL)//初始化线性表
{
L.data=newint[MAXSIZE];//为线性表分配内存空间
if(!L.data)
returnfalse;
L.length=0;
returntrue;
}
boolListInsert(SqListL,intelem,intpos)//线性表插入元素
{
if(pos1||posL.length+1||L.length=MAXSIZE)//判断插入位置是否合法,和线性表是否已满
returnfalse;
for(inti=L.length;i=pos;i--)//将插入位置及之后的元素后移
{
L.data[i]=L.data[i-1];
}
L.data[pos-1]=elem;//插入元素
L.length++;
returntrue;
}
boolListDelete(SqListL,intpos)//线性表删除元素
{
if(pos1||posL.length)//判断删除位置是否合法
returnfalse;
for(inti=pos-1;iL.length-1;i++)//将删除位置之后的元素前移
{
L.data[i]=L.data[i+1];
}
L.length--;
returntrue;
}
intLocateElem(SqListL,intelem)//定位元素位置
{
for(inti=0;iL.length;i++)
{
if(L.data[i]==elem)
returni+1;
}
return0;
}
intmain()
{
SqListL;
InitList(L);
ListInsert(L,1,1);
ListInsert(L,3,2);
ListInsert(L,5,3);
ListInsert(L,7,4);
for(inti=0;iL.length;i++)
{
coutL.data[i];
}
coutendl;
ListDelete(L,2);
for(inti=0;iL.length;i++)
{
coutL.data[i];
}
coutendl;
intpos=LocateElem(L,5);
if(pos)
cout元素5的位置为posendl;
delete[]L.data;
return0;
}
```
实验2:栈的实现(顺序栈)
```
#includeiostream
usingnamespacestd;
constintMAXSIZE=100;
typedefstruct
{
int*data;
inttop;//栈顶指针
}SqStack;
boolInitStack(SqStackS)//初始化栈
{
S.data=newint[MAXSIZE];
if(!S.data)
returnfalse;
S.top=-1;
returntrue;
}
boolPush(SqStackS,intelem)//入栈操作
{
if(S.top==MAXSIZE-1)//判断栈是否已满
returnfalse;
S.data[++S.top]=elem;//栈顶指针+1,将元素elem放入栈顶位置
returntrue;
}
boolPop(SqStackS,i