这篇算是学习过程中的备忘录,之前没有好好敲过这门课的代码,现在开始把每节课敲的代码记录下来,方便期末复习和以后使用。
第一节课:线性表的基本操作
#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