专栏首页C语言入门到精通数据结构 | 每日一练(33)

数据结构 | 每日一练(33)

数据结构

合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下

——老子

1

每日一练

1.下面是一个求两个集合 A 和 B 之差 C=A-B 的程序,即当且仅当 e 是 A 的一个元素,但不是 B 中的一个元素时,e 才是 C 中的一个元素。集合用有序链表实现,初始时,A,B 集合中的元素按递增排列,C 为空;操作完成后 A,B 保持不变,C 中元素按递增排列。下面的函数 append(last,e)是把值为 e 的新结点链接在由指针 last 指向的结点的后面,并返回新结点的地址;函数 difference(A,B)实现集合运算 A-B,并返回表示结果集合 C 的链表的首结点的地址。在执行 A-B 运算之前,用于表示结果集合的链表首先增加一个附加的表头结点,以便新结点的添加,当 A-B 运算执行完毕,再删除并释放表示结果集合的链表的表头结

点。

程序(b)

typedef struct node{ int element; struct node *link;

}NODE;

NODE *A,*B,*C;

NODE *append (NODE *last,int e)

{ last->link=(NODE*) malloc (sizeof(NODE));

last->link->element=e;

return(last->link);

}

NODE *difference(NODE *A,NODE *B)

{NODE *C,*last;

C=last=(NODE*) malloc (sizeof(NODE));

while (1)___

if (A->element<B->element) { last=append(last,A->element); A=A->link; }

else if (2) ___ { A=A->link; B=B->link; } ELSE (3) ___ ;

while (4) __

{ last=append(last,A->element); A=A->link; }

(5) ___; last=C; C=C->link; free (last); return (C);

}

/*call form:C=difference(A,B);*/

正确答案

||后面的是注释

1.

程序(b) C部分

(1)(A!=null && B!=null) ∥两均未空时循环

(2)A->element==B->element ∥两表中相等元素不作结果元素

(3)B=B->link ∥向后移动B表指针

(4)A!=null ∥将A 表剩余部分放入结果表中

(5)last->link=null ∥置链表尾

如果您觉得本篇文章对您有作用,请转发给更多的人,点一下好看就是对小编的最大支持!

-end-

本文分享自微信公众号 - C语言(ycl_printf)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-04-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 数据结构 | 每日一练(92)

    ——老子

    闫小林
  • 数据结构 | 每日一练(72)

    ——老子

    闫小林
  • 1.3 运行C程序的步骤

    通过键盘向计算机输入程序,如发现有错误,要及时改正。最后将此源程序以文件形式存放在自己指定的文件夹内,文件用.c作为后缀。

    闫小林
  • 成为优秀Java开发者的10个方法

    Java开发人员必须深刻理解面向对象编程。如果没有面向对象编程的坚实基础,就无法感受到像Java这样的面向对象编程语言的美感。如果你不太了解现象对象编程是什么,...

    lyb-geek
  • 42款堪称神器的 Chrome 插件

    相信很多人都在使用 Chrome 浏览器,其流畅的浏览体验得到了不少用户的偏爱,但流畅只是一方面, Chrome 最大的优势还是其支持众多强大好用的扩展程序(E...

    格姗知识圈
  • 常用 Chrome 插件

    相信很多人都在使用 Chrome 浏览器,其流畅的浏览体验得到了不少用户的偏爱,但流畅只是一方面, Chrome 最大的优势还是其支持众多强大好用的扩展程序(E...

    用户2769421
  • 42款实用且堪称神器的Chrome插件推荐

    最近为了更好的利用谷歌浏览器,笔者整理了一些常用的谷歌插件,分享给大家,考虑到一些无法翻墙的童鞋,给力的笔者当然是顺便给出离线安装文件。

    华章科技
  • 数据库-part3-pymysql模块操作数数据库

    少年包青菜
  • 爬虫问题一:栈溢出(stack overflow)问题解决方案

    Fatal Python error: Cannot recover from stack overflow

    明天依旧可好
  • Java 8五大主要功能为开发者提供了哪些便利?

    两年前当Java 8发布后,立即受到了业界的欢迎,因为它大大提高了Java的性能。它独特的卖点是,顾及了编程语言的每一个方面,包括JVM(Java虚拟机)和编译...

    LiveEdu

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动