数据结构java版一 预备知识

本文探讨了对象与指针的关系,并通过具体代码示例展示了不同情况下内存中的对象和指针布局。同时,文章还涉及字符串内存表示、数组内存表示、多态的实现分析等主题。

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

--对象与指针关系_根据代码结果画图

假设 My 是自己定义的类。

Mya = new My();
My b = new My();
My c = new My();

a= b;
b = c;
c = a;

在执行上述代码后,内存中对象与指针的图景如何?请画图示意之。

--对象的内存表示_画示意图

看下面类的定义:

classMyA
{
private String data;
public MyA(String x) data = x;
}

classMyB extends MyA
{
private MyA b1;
public MyB b2;

publicMyB(String y){
super(y);

}

.....

MyBa = new MyB("abc");
a.b2 = new MyB("abc");

请画出此时,内存中对象内容的示意图。

--串的内存表示_StringStringBuffer的比较

在进行软件测试的时候,我们经常需要提供很大的串。

可以通过随机数产生较大的串;通过把串不断复制、拼接,也是产生长串的手法。

请产生长度在10M左右的随机串,并输出它。

比较一下用StringStringBuffer的效果。

01-数组的内存表示_画示意图

classMyA
{
public String[] data;
}

MyA[][]t = new MyA[3][];
t[0] = new MyA[2];
t[1] = new MyA[1];
t[1][0] = new MyA();
t[1][0].data = new String[3];

请画出内存中对象的示意图。

--多态的实现_分析调用过程

classA
{
public void f(int x)
{
g(x-1);
}

publicvoid g(int x)
{
f(x);
}
}

classB extends A
{
public void f(int x)
{
if(x>0) g(x-2); 

}

publicvoid g(int x)
{
super.g(x-3);

}

....

newB().f(10);

请分析调用过程

--打印练习

试分别输出如下图形:可以使用任何方法

·        $$$$$$$
$$$$$$$
$$$$$$$
$$$$$$$
$$$$$$$

·        $$$$$$$
$ $
$ $
$ $
$ $
$$$$$$$

·        $$$$$$$$$$ $$$$$ $$$$$ $$$$$
$ $ $ $ $ $ $ $ $
$ $ $ $ $ $ $ $ $
$ $ $ $ $ $ $ $ $
$$$$$ $$$$$ $$$$$ $$$$$ $$$$$

·        $
$$
$$$
$$$$
$$$$$
$$$$$$
$$$$$$$

·        $
$$$
$$$$$
$$$$$$$
$$$$$$$$$
$$$$$$$$$$$
$$$$$$$$$$$$$

·        $
$ $
$ $ $
$ $ $ $
$ $ $ $ $
$ $ $ $ $ $

·        $
$ $
$ $
$ $
$ $
$ $
$ $
$ $
$ $
$ $
$

·        $$ $$
$$ $$ 

$$ $$ 
$$ $$ 
$$ $$ 
$$$$ 
$$ 
$$$$ 
$$ $$ 
$$ $$ 
$$ $$ 
$$ $$ 
$$ $$

·        $$$$$$$$$$$$$
$ $
$ $$$$$$$$$ $
$ $ $ $
$ $ $$$$$ $ $
$ $ $ $ $ $
$ $ $ $ $ $ $
$ $ $ $ $ $
$ $ $$$$$ $ $
$ $ $ $
$ $$$$$$$$$ $
$ $
$$$$$$$$$$$$$

·        $$$$$$$$$$$$
$
$$$$$$$$$$ $
$ $ $
$ $$$$$$ $ $
$ $ $ $ $
$ $ $$ $ $ $
$ $ $$$$ $ $
$ $ $ $
$ $$$$$$$$ $
$ $
$$$$$$$$$$$$

当图形的规模发生变化时,你的程序容易修改吗?

--机器人行走

某少年宫引进了一批机器人小车。可以接受预先输入的指令,按指令行动。小车的基本动作很简单,只有3种:左转(记为L),右转(记为R),向前走若干厘米(直接记数字)。

例如,我们可以对小车输入如下的指令:

15L10R5LRR10R20

则,小车先直行15厘米,左转,再走10厘米,再右转,...

不难看出,对于此指令串,小车又回到了出发地。

你的任务是:编写程序,由用户输入指令,程序输出每条指令执行后小车位置与指令执行前小车位置的直线距离。

【输入、输出格式要求】

用户先输入一个整数nn<100),表示接下来将有n条指令。

接下来输入n条指令。每条指令只由LR和数字组成(数字是0~100之间的整数)

每条指令的长度不超过256个字符。

程序则输出n行结果。

每条结果表示小车执行相应的指令前后位置的直线距离。要求四舍五入到小数后2位。

例如:用户输入:
5
L100R50R10
3LLL5RR4L12
LL
100R
5L5L5L5

则程序输出:
102.96
9.06
0.00
100.00
0.00

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值