在学完数据结构中的顺序表后,为了加深对顺序表的了解以及用于实际,于是我用顺序表模拟实现了杨辉三角、扑克牌结构。
杨辉三角:
主要实现思想:
从第三行开始后的每一行,每一行的第二列到倒数第二列的数字都由上一行的与现在行的列数相同的列的数字和上一行前一列的数字的和。就如图所示:
从第三行开始,第三行的第二列开始,第二列的元素等于第二行的第二列元素和前一列元素的和,就是红色部分等于蓝色和黄色的和,之后的每一行都如此。但每一行的首和尾都是1,这个要独立放置。
即公式为:
a[k][p]=b[k-1][p]+b[k-1][p-1],a为当前行,b为上一行。
但用到顺序表实现时,顺序表可以理解为一维数组,不适合用上面的二维数组的公式计算数字,但是我们可以用到顺序表的
即:
见下列代码:
输入N意味着输出杨辉三角的前N行:
N=5,前五行
N=8,前8行
扑克牌结构:
要实现的结构有:
1:实现一副扑克牌,其中包括了四个花色对应的13张牌,J、Q、K用11、12、13数字代替,即总共有52张牌。
2:实现洗牌,将52张牌进行洗牌。
3:有N个人打牌,每人5张牌,进行发牌。
1->实现一副扑克牌。
首先是定义一个card的类,里面的成员属性包括牌的花色、牌的数字。然后用顺序表来存储每一张牌card:
然后定义一个常量字符串数组,用于存放花色:
然后在main函数里面定义顺序表,泛型E中放card类。
然后通过传入顺序表这个参数给一个方法进行牌的初始化:
这样就有了52张牌:
2->实现洗牌:
将刚刚定义的顺序表Card进行传入一个洗牌的方法,进行洗牌:
这里swap方法进行自己定义:
这样一副扑克牌里面的牌是打乱的:
3->实现N个人进行发牌,每人五张牌:
这里用到上面杨辉三角中顺序表中放顺序表的思想,也就是类似于二维数组的思想,意图是一个people 的顺序表里面放的是顺序表,这里面的顺序表就放的是5张牌。
然后进行发牌:
最后每个人手上有五张牌:
这是前两个人手里的五张牌:
总结:
在结合了前面的Java中面向对象的思想之后,抽象出了每一张牌的属性,然后可以定义一个card类,然后运用新学习的顺序表的知识——可以存放不同包装类的元素,因此这个顺序表可以存放card类的元素,因此将一副扑克牌抽象化成一个顺序表来实现扑克牌结构。最后就是用顺序表里面放顺序表来实现类似于二维数组的结构,充分结合了之前的知识,也让我对顺序表有新的认识。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)