链表,遍历链表,结构体指针
2015-03-17 17:01
148 查看
文章:/article/1906302.html 的链表版本。
代码如下:
关于链表和数组选择的经验法则:
(1)当需要通过索引以常量时间访问元素,且预先知道需要存储多少元素,或当需要尽量减少每个元素所占用的空间时,建议使用数组。
(2)当需要能够不断增加新元素,或需要在列表的中间做大量的插入时,建议使用链表。
以上文字摘自《C++程序设计——现代方法》,此书读着很愉快。
代码如下:
#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++程序设计——现代方法》,此书读着很愉快。
相关文章推荐
- 只给出链表某节点的的指针,如何删除它(不允许遍历)
- 结构体指针怎么用-简单的链表
- 给定一个链表的头指针,要求只遍历一次,将单链表中的元素顺序反转过来
- C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com
- C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表
- C++指向结构体变量的指针与链表结构的关系应用
- VC:遍历文件夹下所有文件和文件夹(CFileFind类、树视图控件、图像链表、HTREEITEM句柄、TV_INSERTSTRUCT 结构体)
- 结构体指针处理链表
- 给定一个链表的头指针,要求只遍历一次,将单链表中的元素顺序反转过来
- 巧妙利用两个指针遍历链表——链表中倒数第k个结点
- hnuoj LRU Caching (链表,结构体指针 / vector)
- 指针数组 指针的指针 二维数组指针 结构体指针 链表
- 输入完全二叉树的先序序列,用#代表虚结点(空指针),如ABD###CE##F##,建立二叉树的二叉链表。 (2)写出对用二叉链表存储的二叉树进行先序、中序和后序遍历的递归和非递归算法。 (3)写出
- 大头锻炼日记2 -- 无指针和结构体的vbscript中实现单向链表
- 给定一个链表的头指针,要求只遍历一次,将单链表中的元素的顺序翻转过来
- 链表中的结构体和指针
- 用结构体实现链表的创建、遍历、结点插入、结点删除
- 链表中头和尾节点/指针的常规用法:插入、删除、遍历
- *指针_函数指针、指针控制数组、链表(结构体指针)
- 结构体中的链表指针以及->的含义,内存角度理解最易懂