这篇算是学习过程中的备忘录,之前没有好好敲过这门课的代码,现在开始把每节课敲的代码记录下来,方便期末复习和以后使用。
第一节课:线性表的基本操作
#include <cstdio>//C++的编译
#include <cstdlib>
#include <iostream>//c++输入输出
using namespace std;//命名空间
#define MAXSIZE 100
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int Status;// 状态 是个整型
typedef int ElemType;
typedef struct{
ElemType *elem;//数据的基地址
int length;//实际长度
}SqList;
//1.初始化操作
Status InitList(SqList &L){
//不引用的话,创建可以成功, 但是申请空间给了形参。对参数的值有改变则需要引用,否则都行。
L.elem = new int[MAXSIZE];//MAXSIZE个整形空间
if(L.elem==NULL)//没有申请空间成功,失败
{
// printf("fail!");
return ERROR;//exit(OVERFLOW);
}
L.length=0;
return OK;
}
//2.销毁线性表
void DestroyList(SqList &L)
{
if(L.elem)
delete []L.elem;//不需要写free了
}
//3.清空
void ClearList(SqList &L)
{
L.length=0;//长度置为0
}
//4.显示线性表
void DispList(SqList &L)//参数引用不引用都可以
{
int i;
for(i=0;i<L.length;i++)
printf("[%d]",L.elem[i]);
printf("\n");
}
//5.求长度
int LengthList(SqList &L)
{
return L.length;
}
//6.判断是空 7.是满(return (L.length==MAXSIZE);)
bool isEmptyList(SqList &L)
{
// return L.length==0?1:0;
return (L.length==0);
// if(L.length ==0)
// return 1;
// else
// return 0;
}
//8.查: 按位置 按值
Status GetItem(SqList &L,int i,ElemType &e)//在L中找第i个元素
{
if(i<1 || i>L.length)
return ERROR;
e=L.elem[i-1];
return OK;
}
int LocateItem(SqList &L,ElemType e)//在L中找到e值,并返回位置
{
// int i;
// for(i=0;i<L.length ;i++)
// if(L.elem[i]==e)
// return i+1;
// return 0;
int i=0;
while(i<L.length && L.elem[i]!=e)
i++;
if(i==L.length) return 0;//找完了没找到
else return i+1;
}
//9.在第i个元素前插入 e
Status InsertList(SqList &L,int i,ElemType e)
{
int j;
if(i<1||i>L.length+1)//判断位置是否合法
return ERROR;
if(L.length==MAXSIZE) return ERROR;//if(isFullList(L))
for(j=L.length-1;j>i-1;j--)
L.elem[j+1]=L.elem[j];
L.elem[i-1]=e;
L.length++;
return OK;
}
//10.在L中删除第i个元素,把要删除的数据放到e中
Status DeleteList(SqList &L,int i,ElemType &e)
{
int j;
if(i<1 || i>L.length)
return ERROR;
e=L.elem[i-1];//在被删掉之前保存在e中
for(j=i;j<L.length;j++)
L.elem[j-1]=L.elem[j];//相当于把下标为i-1,即第i个元素被后边给覆盖了
// for(j=i-1;j<L.length-1;j++)
// L.elem[j]=L.elem[j+1]//被后边元素覆盖
L.length--;
return OK;
}
int main(){
SqList L;
int i;
if(InitList(L)==1)
{
printf("success! lentgh=%d\n",L.length);
}
for(i=0;i<5;i++)
L.elem[i]=i;//添加一些元素测试
L.length=5;
DispList(L);
return 0;
}
日后更。2020-02-29 12:34:21
来源:https://www.cnblogs.com/Flyingeggs/p/12382338.html