Eswlnk Blog Eswlnk Blog
  • 资源
    • 精彩视频
    • 破解专区
      • WHMCS
      • WordPress主题
      • WordPress插件
    • 其他分享
    • 极惠VPS
    • PDF资源
  • 关于我
    • 论文阅读
    • 关于本站
    • 通知
    • 左邻右舍
    • 玩物志趣
    • 日志
    • 专题
  • 热议话题
    • 游戏资讯
  • 红黑
    • 渗透分析
    • 攻防对抗
    • 代码发布
  • 自主研发
    • 知识库
    • 插件
      • ToolBox
      • HotSpot AI 热点创作
    • 区块
    • 快乐屋
    • 卡密
  • 乱步
    • 文章榜单
    • 热门标签
  • 问答中心反馈
  • 注册
  • 登录
首页 › 代码发布 › 工程实践:模块化程序设计(2)

工程实践:模块化程序设计(2)

Eswlnk的头像
Eswlnk
2021-06-06 17:31:59
工程实践:模块化程序设计(2)-Eswlnk Blog
智能摘要 AI
该题要求实现两个数组La和Lb的合并,并在合并后的数组中删除指定位置的元素,最后清空数组。具体步骤如下: 1. **输入**:分别输入两个数组La和Lb的元素(以0结束),Lb中的新元素依次插入到La后面。 2. **合并**:调用`Union`函数将Lb中不在La中的元素插入到La的末尾。 3. **删除**:输入欲删除的位置(从1开始计数),调用`ListDelete`函数删除该位置的元素。若位置无效,输出"Position Errorn"。 4. **输出与清空**:输出合并后的数组及删除元素后的

6-2 集合合并-(数组) (30 分)

先分别输入两个数组La,Lb的元素数据(0 结束元素元素输入,输入数据没有排序要求),Lb中出现的新元素插入依次到La的后面,然后输入删除结点的位置(指La,Lb合并后的数组中欲删除的元素位置,位置从1开始计算),最后删除所有元素。

函数接口定义:

void Union(SqList *La,SqList Lb);
Status ListLength(SqList L);
Status GetElem(SqList L,ElemType i,ElemType *e);
Status LocateElem(SqList L,ElemType e,Status compare(ElemType a1,ElemType a2));
Status ListInsert(SqList *L,ElemType i,ElemType e);
Status ListEmpty(SqList L);
Status ListDelete(SqList *L,ElemType i,ElemType *e); //如果删除位置不存在,输出"Position Error\n"
Status equal(ElemType a1,ElemType a2);
Status input(SqList *L);  //输入过程中,0作为结束输入的标志数,不作为有效数 
void output(SqList *L);  //输出数组中所有元素 
void empty(SqList *L);   //删除所有元素 

裁判测试程序样例:

#include<stdio.h>
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0

//Status 为函数的类型,其值是函数结果状态代码,如OK等
typedef int Status;

// ElemType为数据元素类型,根据实际情况而定,这里假设为int
typedef int ElemType;

#define MAXSIZE 20          /* 存储空间初始分配量 */
typedef struct
{
    ElemType data[MAXSIZE];  /* 数组,存储数据元素 */
    int length;              /* 表当前有效长度 */
}SqList;

/* 函数定义 */
void Union(SqList *La,SqList Lb);
Status ListLength(SqList L);
Status GetElem(SqList L,ElemType i,ElemType *e);
Status LocateElem(SqList L,ElemType e,Status compare(ElemType a1,ElemType a2));
Status ListInsert(SqList *L,ElemType i,ElemType e);
Status ListEmpty(SqList L);
Status ListDelete(SqList *L,ElemType i,ElemType *e);
Status equal(ElemType a1,ElemType a2);
Status input(SqList *L);  //输入过程中,0作为结束输入的标志数,不作为有效数 
void output(SqList *L);  //输出数组中所有元素 
void empty(SqList *L);   //删除所有元素 

int main(void){
    int sign,i;
    ElemType e;
    SqList La,Lb;

    input(&La);input(&Lb); 
    scanf("%d",&i);  
    Union(&La,Lb);output(&La);

    ListDelete(&La,i,&e);   
    output(&La);

    empty(&La);  
    output(&La);

    return 0;
}
void output(SqList *L)
{
    int i;
    if(ListEmpty(*L)==OK)
        printf("No Element!");
    else    
        for (i = 0; i < L->length; i++)
        {
            printf("%d ", L->data[i]);
        }
    printf("\n");
}

/* 请在这里填写答案 */

输入样例:

先分别输入La,Lb(0结束输入),然后输入欲在合并后数组中删除的结点位置

1 2 3 4 5 0
2 3 4 5 6 7 8 9 0
2

输出样例:

先输出合并后的数组,再输出在合并数组中删除结点后的数组

1 2 3 4 5 6 7 8 9 
1 3 4 5 6 7 8 9 
No Element!

我的解答

#include<memory.h>
void Union(SqList* La, SqList Lb) {
    ElemType e;
    int La_len, Lb_len;
    int i;
    La_len = ListLength(*La);
    Lb_len = ListLength(Lb);
    for (i = 1; i <= Lb_len; i++) {
        GetElem(Lb, i, &e);
        if (!LocateElem(*La, e, equal)) {
            ListInsert(La, ++La_len, e);
        }
    }
}
Status ListLength(SqList L) {//取列表长度函数
    int i = 0;
    while (1)
    {
        if (L.data[i] == 0)
        {
            break;
        }
        i++;
    }
    return i;
}
Status GetElem(SqList L, ElemType i, ElemType* e) {// 把 DATA[i] 给对应的 e
    int t;
    if (L.length > 0 && i <= L.length)
    {
        *e = L.data[i - 1];
        return OK;
    }
    else
        return ERROR;

}
Status LocateElem(SqList L, ElemType e, Status compare(ElemType a1, ElemType a2)) {//寻找符合要求元素的位序
    int i = 0;
    while (i < L.length)
    {
        if (compare(e, L.data[i]))
            break;
        i++;
    }
    if (i < L.length) {
        return i + 1;
    }
    return 0;
}
Status ListInsert(SqList* L, ElemType i, ElemType e) {//插入新的数据元素
    (*L).data[i - 1] = e;
    (*L).length = i;
    return OK;
}
Status ListEmpty(SqList L) {//判断列表是否为空
    if (L.length == 0)
        return OK;
    else
        return ERROR;
}
Status ListDelete(SqList* L, ElemType i, ElemType* e)//如果删除位置不存在,输出"Position Error\n"
{
    if (i <= 0 || i > (*L).length)
    {
        printf("Position Error\n");
        return ERROR;
    }
    int j;
    for (j = i - 1; j < (*L).length; j++)
    {
        (*L).data[j] = (*L).data[j + 1];//移动元素位置 向前移动
    }
    (*L).length--;
    return OK;
}
Status equal(ElemType a1, ElemType a2) {//判断两个数
    if (a1 == a2)
        return TRUE;
    else
        return FALSE;
}
Status input(SqList* L) {//输入过程中,0作为结束输入的标志数,不作为有效数 
    int  i = 0;//计数
    while (1)
    {
        scanf("%d", &(*L).data[i]);
        if ((*L).data[i] == 0)
            break;//若是最后一个0 跳出循环
        i++;
        /*
        * 列表长度函数单独处理
        i++;
        (*L).length = i;//列表的长度
        */
        
    }
    (*L).length = i;
    return OK;
}  
void empty(SqList* L) {
     memset(L,0,sizeof(SqList));
//    (*L).length = 0;
}//删除所有元素 

运行截图

工程实践:模块化程序设计(2)-Eswlnk Blog
本站默认网盘访问密码:1166
本站默认网盘访问密码:1166
声明:本站原创文章文字版权归本站所有,转载务必注明作者和出处;本站转载文章仅仅代表原作者观点,不代表本站立场,图文版权归原作者所有。如有侵权,请联系我们删除。
pta工程实践程序设计
4
0
Eswlnk的头像
Eswlnk
一个有点倒霉的研究牲站长
赞赏
工程实践:模块化程序设计(1)
上一篇
工程实践:模块化程序设计(3)
下一篇

评论 (0)

请登录以参与评论
现在登录
    发表评论

猜你喜欢

  • 「日志记录」逆向必应翻译网页版API实现免费调用
  • 「代码分享」第三方平台VIP视频解析API接口
  • 「至臻原创」某系统网站登录功能监测
  • 「开发日志」在Vue3中如何为路由Query参数标注类型
  • 「其他分享」分享一个在Tun模式下可用的脚本
Eswlnk的头像

Eswlnk

一个有点倒霉的研究牲站长
1108
文章
319
评论
679
获赞

随便看看

页面优化:使用JS脚本实现页面链接预加载
2022-05-01 2:16:04
OneTool 私人助手 | 多平台助手程序源码
2023-06-25 12:37:28
前端逆向JavaScript之获取视频解析接口
2023-07-18 22:28:29

文章目录

专题展示

WordPress53

工程实践37

热门标签

360 AI API CDN java linux Nginx PDF PHP python SEO Windows WordPress 云服务器 云服务器知识 代码 免费 安全 安卓 工具 开发日志 微信 微软 手机 插件 攻防 攻防对抗 教程 日志 渗透分析 源码 漏洞 电脑 破解 系统 编程 网站优化 网络 网络安全 脚本 苹果 谷歌 软件 运维 逆向
  • 首页
  • 知识库
  • 地图
Copyright © 2023-2025 Eswlnk Blog. Designed by XiaoWu.
本站CDN由 壹盾安全 提供高防CDN安全防护服务
蜀ICP备20002650号-10
页面生成用时 0.564 秒   |  SQL查询 40 次
本站勉强运行:
友情链接: Eswlnk Blog 网站渗透 倦意博客 特资啦!个人资源分享站 祭夜博客 iBAAO壹宝头条
  • WordPress142
  • 网络安全64
  • 漏洞52
  • 软件52
  • 安全48
现在登录
  • 资源
    • 精彩视频
    • 破解专区
      • WHMCS
      • WordPress主题
      • WordPress插件
    • 其他分享
    • 极惠VPS
    • PDF资源
  • 关于我
    • 论文阅读
    • 关于本站
    • 通知
    • 左邻右舍
    • 玩物志趣
    • 日志
    • 专题
  • 热议话题
    • 游戏资讯
  • 红黑
    • 渗透分析
    • 攻防对抗
    • 代码发布
  • 自主研发
    • 知识库
    • 插件
      • ToolBox
      • HotSpot AI 热点创作
    • 区块
    • 快乐屋
    • 卡密
  • 乱步
    • 文章榜单
    • 热门标签
  • 问答中心反馈