链表,遍历链表,结构体指针

文章:http://blog.csdn.net/lionpku/article/details/44278803 的链表版本。

代码如下:

#include <iostream>
using namespace std;

//敌舰结构体
struct EnemySpaceShip
{
	int x_coordinate;
	int y_coordinate;
	int weapon_power;
	EnemySpaceShip* p_next_enemy;
};

//生产敌舰
EnemySpaceShip* addNewEnemyToList(EnemySpaceShip* p_list)
{
	EnemySpaceShip* p_ship = new EnemySpaceShip;
	p_ship->x_coordinate = 0;
	p_ship->y_coordinate = 0;
	p_ship->weapon_power = 10;
	p_ship->p_next_enemy = p_list;
	return p_ship;
}

//升级敌舰
void upgradeWeapons(EnemySpaceShip* p_ship)
{
	p_ship->weapon_power += 10;
}

int main()
{
	EnemySpaceShip* p_list = NULL;
	for (int i = 0; i < 5; i++)
	{
		p_list = addNewEnemyToList(p_list);
	}
	cout << "Enemy Space Ships have been built!" << endl;
	EnemySpaceShip* p_current = p_list;
	int count = 1;
	while (p_current != NULL)
	{
		cout << "EnemySpaceShip[" << count++ << "]: (" << p_current->x_coordinate << "," << p_current->y_coordinate << ") weapon_power: " << p_current->weapon_power << endl;
		p_current = p_current->p_next_enemy;
	}
	cout << "----------UPGRADE WEAPONS----------" << endl;
	count = 1;
	p_current = p_list;
	while (p_current != NULL)
	{
		upgradeWeapons(p_current);
		p_current = p_current->p_next_enemy;
	}
	count = 1;
	p_current = p_list;
	while (p_current != NULL)
	{
		cout << "EnemySpaceShip[" << count++ << "]: (" << p_current->x_coordinate << "," << p_current->y_coordinate << ") weapon_power: " << p_current->weapon_power << endl;
		p_current = p_current->p_next_enemy;
	}
	return 0;
}


关于链表和数组选择的经验法则:

(1)当需要通过索引以常量时间访问元素,且预先知道需要存储多少元素,或当需要尽量减少每个元素所占用的空间时,建议使用数组。

(2)当需要能够不断增加新元素,或需要在列表的中间做大量的插入时,建议使用链表。

以上文字摘自《C++程序设计——现代方法》,此书读着很愉快。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值