第三周—项目二—建设顺序表算法库

来源:互联网 发布:wps for linux 字体 编辑:程序博客网 时间:2024/05/24 03:48

/*    * Copyright (c) 2017,烟台大学计算机学院    * All right reserved.    * 文件名称:main.cpp   * 作者:王华慧 * 完成日期:2017年9月20日    * 版本号:v1.0    *    * 问题描述:自建算法库,实现有关线性表的各种运算   * 输入描述:标准函数输入    * 程序输出:标准函数输出   */      

项目采用多文件的形式来实现,创建了一个a.cpp用来存放函数定义,w.h存放函数声明,main函数来存放主函数体

建立一个 w.h  存放函数声明

#ifndef W_H_INCLUDED#define W_H_INCLUDED#define MaxSize 50typedef int ElemType;typedef struct{    ElemType data[MaxSize];    int length;} SqList;void CreateList(SqList *&L, ElemType a[], int n);//用数组创建线性表void InitList(SqList *&L);//初始化线性表InitList(L)void DestroyList(SqList *&L);//销毁线性表DestroyList(L)bool ListEmpty(SqList *L);//判定是否为空表ListEmpty(L)int ListLength(SqList *L);//求线性表的长度ListLength(L)void DispList(SqList *L);//输出线性表DispList(L)bool GetElem(SqList *L, int i, ElemType &e);//求某个数据元素值GetElem(L,i,e)int LocateElem(SqList *L, ElemType e);//按元素值查找LocateElem(L,e)bool ListInsert(SqList *&L, int i, ElemType e);//插入数据元素ListInsert(L,i,e)bool ListDelete(SqList *&L, int i, ElemType &e);//删除数据元素ListDelete(L,i,e)#endif // LIST_H_INCLUDED#endif
将以一个a.cpp  存放函数定义

#include <stdio.h>#include <malloc.h>#include "w.h"//用数组创建线性表void CreateList(SqList *&L, ElemType a[], int n){    int i;    L = (SqList *)malloc(sizeof(SqList));    for (i = 0; i<n; i++)        L->data[i] = a[i];    L->length = n;}//初始化线性表InitList(L)void InitList(SqList *&L)   //引用型指针{    L = (SqList *)malloc(sizeof(SqList));    //分配存放线性表的空间    L->length = 0;}//销毁线性表DestroyList(L)void DestroyList(SqList *&L){    free(L);}//判定是否为空表ListEmpty(L)bool ListEmpty(SqList *L){    return(L->length == 0);}//求线性表的长度ListLength(L)int ListLength(SqList *L){    return(L->length);}//输出线性表DispList(L)void DispList(SqList *L){    int i;    if (ListEmpty(L)) return;    for (i = 0; i<L->length; i++)        printf("%d ", L->data[i]);    printf("\n");}//求某个数据元素值GetElem(L,i,e)bool GetElem(SqList *L, int i, ElemType &e){    if (i<1 || i>L->length)  return false;    e = L->data[i - 1];    return true;}//按元素值查找LocateElem(L,e)int LocateElem(SqList *L, ElemType e){    int i = 0;    while (i<L->length && L->data[i] != e) i++;    if (i >= L->length)  return 0;    else  return i + 1;}//插入数据元素ListInsert(L,i,e)bool ListInsert(SqList *&L, int i, ElemType e){    int j;    if (i<1 || i>L->length + 1)        return false;   //参数错误时返回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    return true;            //成功插入返回true}//删除数据元素ListDelete(L,i,e)bool ListDelete(SqList *&L, int i, ElemType &e){    int j;    if (i<1 || i>L->length)  //参数错误时返回false        return false;    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    return true;              //成功删除返回true}

主程序放在mian

#include "w.h"#include "a.cpp"int main(){    SqList *sq;    ElemType x[6] = { 5,8,7,2,4,9 };    CreateList(sq, x, 6);//建立线性表函数    DispList(sq);//输出线性表函数    return 0;}

运行结果.




总结:建立一个自己的算法库需要我们对程序的结构体系了解。对多文件组织要有深层次的体会。

遇到难题向身边的朋友寻求帮助,有困难一起解决。



阅读全文
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 腾讯视频会员开通一个月贵怎么办 微交易买美国指数输了四千块怎么办 淘宝地址中包含了违禁词怎么办 微信支付失败但是钱扣了怎么办 支付宝向别人收款交易关闭了怎么办 从淘宝充的晋江币充值异常怎么办 接手转让店铺会员要求退卡怎么办 转转买手机卖家拒绝退款怎么办 淘宝买的东西电话号码留错了怎么办 平板电脑没电关机没保存文件怎么办 恢复出厂设置需要谷歌账号怎么办 华为手机云端里照片删除了怎么办 客户退货卖家一直没收到货怎么办 在淘宝买到假货投诉不管用怎么办 差评不接电话不回旺旺不要钱怎么办 饿了么同行恶意差评怎么办 苹果手机更新后淘宝用不了怎么办 淘宝网快递丢件了买家怎么办 评价后忘了截图五星好评怎么办 在淘宝被骗了好评返现怎么办 苹果4s微信版本过低怎么办 微信版本太低无法登录怎么办 苹果4微信版本低登录不了怎么办 安卓手机微信版本低登录不了怎么办 苹果微信版本低登录不了怎么办 安装包与当前版本不兼容怎么办 游戏与苹果手机系统不兼容怎么办 闲鱼买家申请退款不退货怎么办 在淘宝买的战地1登录不了怎么办 支付宝转账到注销的账号怎么办 支付宝用户支付密码被锁定怎么办 淘宝提现需要的手机宝令怎么办 手机换号码了支付宝账号怎么办 卖家收到货迟迟不给退款怎么办 闲鱼东西已发出买家申请退款怎么办 如果东西在路上买家要退款怎么办 卖家收到退的货后不退款怎么办 扣48分淘宝被限制登录怎么办 淘宝网申请退款卖家不理怎么办 高考生如果把登录密码忘记了怎么办 普高考生登录密码忘记了怎么办