本周 《编程珠玑》第三章结束(关于数据结构部分)

本文深入探讨了数据构造与抽象在程序设计中的重要性,通过实例展示了如何有效处理大量数据,避免冗余编码,提升程序层次性和可修改性。通过实例分析了如何将数据分类存储,并利用循环体简化数据处理流程。此外,提供了几个未完成的习题解决方案思路,涉及数据结构和算法应用,强调了表示法在编码中的关键作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如何构造数据?如何数据抽象?是我们程序设计中经常遇到的问题,一个好的数据抽象可以很好的简化程序的设计,就如本章开头提到的那个例子,数据量可谓大量,如果不加分析,拿来就设计程序编码,那会造成不小的麻烦,写出的程序也是相对冗杂,层次性不够强,不具修改性。
下面部分只是一种模拟,只使用了四个类别:
page1和page2的数据分别保存在数据count1、decline1和count2、decline2,另外offset[]的存在在一定程度上为这种实现提供了一种可能,即构建循环体,保证循环的进行。
	while (infile>>entry[0]>>entry[1]>>entry[2]>>entry[3])
{
//summary up to page1 or page2
if (entry[1] == 1 && entry[0] != 0)
{
//total
count1[entry[0]-1][0] ++;
for (j = 2;j < N;++ j)
{
if (entry[j] != 0)
{
//answer the question
count1[entry[0]-1][entry[j]-1+offset[j]] ++;
}
else
{
//decline the question
decline1[entry[0]-1][entry[j]-1+offset[j]];
}
}
}
else if (entry[1] == 2 && entry[0] != 0)
{
//total
count2[entry[0]-1][0] ++;
for (j = 2;j < N;++ j)
{
if (entry[j] != 0)
{
//answer the question
count2[entry[0]-1][entry[j]-1+offset[j]] ++;
}
else
{
//decline the question
decline2[entry[0]-1][entry[j]-1+offset[j]];
}
}
}
}

除了这个例子外,本章的课后习题没怎么做,实现起来不是很难,习题3的banner函数没想出来怎么构造,好像字符数组要自己一个个书写(似乎就是这么简单繁琐)。习题5没怎么看明白,关于连字符按优先权分割自己好像没怎么又兴趣。后面的单词检错和数字显示,使用简单的方法不是很难。毕竟这一章只是入门,复杂优美的数据结构还有很多,以后还很经常遇到的。
最后,送上书中提到的一句话:
[color=green][b]程序员在对空间缺乏无能为力是,往往会脱离代码的缠绕,胡过头去凝神考虑他的数据,这样会找到更好的方法。表示法是编码的精华。[/b][/color]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值