第三周-项目2 - 建设“顺序表”算法库
来源:互联网 发布:知识点梳理软件 编辑:程序博客网 时间:2024/05/20 17:42
头文件list.h:
#ifndef LIST_H_INCLUDED//防止重复定义出错#define LIST_H_INCLUDED#include <stdio.h>//必要的库文件包括#include <malloc.h>#define MaxSize 50 //必要的宏定义 //声明实现算法的自定义函数,以及其他必要的自定义函数typedef int ElemType;//将ElemType定义为int类型typedef struct//用来存储顺序表的结构体Sq{ElemType data[MaxSize];//定义一个数组用来存储,int型int length;//顺序表的长度}SqList;bool ListEmpty(SqList *L);//———————————————判断线性表是否为空ListEmptyvoid DispList(SqList *&L);//———————————————输出线性表DispListvoid CreateList(SqList *&L,ElemType a[],int n);//———— 1.建立线性表CreateListvoid InitList(SqList * &L);//—————————————— 2.初始化线性表InitListvoid DestroyList(SqList * &L);//—————————————3.销毁线性表DestroyListbool ListInsert(SqList *&L,int i,ElemType &e);//—————4.插入数据元素ListInsertbool ListDelete(SqList *&L,int i,ElemType &e);//—————5.删除数据元素ListDeleteint ListLength(SqList *&L);//—————————————— 6.求线性表的长度ListLength的bool GetElem(SqList *&L,int i,ElemType &e);//—————— 7.求线性表L中指定位置(e)的某个数据元素GetElemint LocateElem(SqList *&L,ElemType e);//—————————8.查找元素LocateElem#endif//最前面两行的结束语句
函数文件list.cpp:
#include"list.h"//包含头文件//定义各个自定义函数void CreateList(SqList *&L,ElemType a[],int n)//————————1.“建立线性表”的算法CreateList{int i;L=(SqList *)malloc(sizeof(SqList));//分配空间for(i=0;i<n;i++)//把数组的值赋予线性表L->data[i]=a[i];L->length=n;//赋予表长}bool ListEmpty(SqList *L)//——————————实现判断线性表是否为空的算法ListEmpty{if(L->length==0){printf("线性表为空\n");return true;}else return false;}void DispList(SqList *&L)//——————————实现“输出线性表”的算法DispList{int i;if(ListEmpty(L))//判断是不是空表return;for (i=0; i<L->length; i++) //输出 printf("%d ",L->data[i]); printf("\n"); //换行}void InitList(SqList * &L)//————————————2.初始化线性表InitList{L=(SqList *)malloc(sizeof(SqList));L->length=0;}void DestroyList(SqList * &L)//————————————3.销毁线性表DestroyList{free(L);}bool ListInsert(SqList *&L,int i,ElemType &e)//————————————4.插入数据元素ListInsert{if(i<1||i>L->length)return false;i--;for(int j=L->length;j>i;j--){L->data[j]=L->data[j-1];}L->length++;L->data[i]=e;return true;}bool ListDelete(SqList *&L,int i,ElemType &e)//————————————5.删除数据元素ListDelete{if(i<1||i>L->length)return false;i--;e=L->data[i];for(int j=i;j<L->length-1;j++)L->data[j]=L->data[j+1];L->length--;return true;}int ListLength(SqList *&L)//————————————6.增加求线性表的长度ListLength的函数{return(L->length);}bool GetElem(SqList *&L,int i,ElemType &e)//————————————7.增加求线性表L中指定位置(e)的某个数据元素GetElem的函数{if(i<1||i>L->length)return false;e=L->data[i-1];return true;}int LocateElem(SqList *&L,ElemType e)//————————————8.增加查找元素LocateElem的函数{int i=0;while(i<L->length&&L->data[i]!=e)i++;if(i>=L->length)return 0;elsereturn i+1;}
用于测试的主函数mian.cpp:
#include"list.h"//包含头文件//定义用于驱动测试的main函数int main(){int i;ElemType e;SqList *sq;//定义一顺序表,结构体ElemType x[6]={1,2,3,4,5,6};//定义一个数组并赋值//1. CreateList(sq, x, 6);//调用“建立线性表” DispList(sq);//调用“输出线性表”ListEmpty(sq);//判断线性表是否为空//2.InitList(sq);//初始化线性表DispList(sq);//调用“输出线性表”//3.CreateList(sq, x, 6);//调用“建立线性表”DestroyList(sq);//销毁线性表DispList(sq);//调用“输出线性表”//4.i=2;e=5;CreateList(sq, x, 6);//调用“建立线性表”ListInsert(sq,i,e);//插入数据元素DispList(sq);//调用“输出线性表”//5.ListDelete(sq,i,e);//删除数据元素DispList(sq);//调用“输出线性表”//6.int l;l=ListLength(sq);//求线性表的长度printf("%d ",l);printf("\n");//7.int n;GetElem(sq,i,n);//求线性表L中指定位置(e)的某个数据元素printf("%d ",n);printf("\n");//8.int m;m=LocateElem(sq,e);//查找元素printf("%d ",m);printf("\n"); return 0;}
运行结果:
总结:运行结果来看和原来是没有什么差别的,需要注意的是头文件里防止重新定义的几个语句,类似的extern也可以帮助这类情况
#ifndef LIST_H_INCLUDED//防止重复定义出错#define LIST_H_INCLUDED#endif
0 0
- 第三周—项目2 建设“顺序表”算法库
- 第三周项目2建设顺序表算法库
- 第三周项目2-建设“顺序表”算法库
- 第三周-项目2-建设“顺序表算法库”
- (第三周项目2)建设“顺序表”算法库
- 第三周项目2—建设“顺序表”算法库
- 第三周 项目2-建设顺序表算法库
- 第三周项目2-建设顺序表算法库
- 第三周 项目2-建设“顺序表”算法库
- 第三周 项目2 建设“顺序表”算法库
- 第三周项目2--建设”顺序表“算法库
- 第三周项目2 建设“顺序表”算法库
- 第三周项目2-建设“顺序表”算法库
- 第三周项目2-建设“顺序表”算法库
- 第三周项目2-建设“顺序表”算法库
- 第三周项目2-建设“顺序表”算法库
- 第三周项目2 建设“顺序表”算法库
- 第三周 项目2 建设“顺序表”算法库
- 第九周实践项目三---稀疏矩阵的三元组表示的实现及应用
- 快速排序
- 第十六周项目(1):验证算法7——归并排序
- ZZUOJ-10434: good string
- 第十周 项目三 利用二叉树遍历思想解决问题(3)
- 第三周-项目2 - 建设“顺序表”算法库
- 【第16周-内部排序项目1—直接插入排序】
- 第十六周项目1-验证算法(3)冒泡排序
- 第16周—项目4 英文单词的基数排序
- 验证算法(4)快速排序
- 第十周 项目三 利用二叉树遍历思想解决问题(4)
- 【UWP通用应用开发】使用Toast通知与动态磁贴
- 第十二周项目三-----深度优先遍历
- 第十六周--项目5算法验证基数排序