指针就是地址
指针就是地址,地址就是指针;指针变量是一个变量,它保存了基本类型变量的地址。 如果指针变量p保存了变量a的地址,那么称作p指向了a,* p 就是变量a。 如果p是一个指针变量,* p 表示了以 p的内容为地址的变量,就是* p指向的变量。 可以这样来理解指针:指针是一种特殊的语言机制,它存放的是其它变量的地址,并且可以通过解引用操作符*,来获取该地址的内容。这也造成了一种指向的关系。
节点
节点包括:数据域和指针域,当前节点的指针域包含的指针为下一个节点的地址 存储同样的数据,顺序结构和链式结构消耗相同存储空间 结点(表示数据元素) =数据域(数据元素的映象) + 指针域(指示后继元素存储位置)
链表
包含数据域和节点域
TIPS: 1.线性链表存储空间可以不连续,存储顺序和逻辑顺序(1-2-3-4-5)也可以不一致,而数据元素之间的逻辑关系是由指针域来确定的 2.存储同样的数据,顺序结构和链式结构消耗相同存储空间。
#include <cstdlib>
#include <iostream>
#include "LinkedList.h"
using namespace std;
int main() {
LinkedList<int> list;
for (int i = 0; i < 10; i++) {
int item;
cout << "输入一个数字:";
cin >> item;
list.insertFront(item);
}
cout << "List: ";
list.reset();
while (!list.endofList()) {
cout << list.data() << " ";
list.next();
}
cout << endl;
int key;
cout << "输入需要删除的数:";
cin >> key;
list.reset();
while (!list.endofList()) {
if (list.data() == key) {
list.deleteCurrent();
continue;
}
list.next();
}
cout << "List: ";
list.reset();
while (!list.endofList()) {
cout << list.data() << " ";
list.next();
}
cout << endl;
return 0;
}
链表类模板
成员函数注意以下几点: 先判断空指针情况:空指针影响程序运行 再判断front、rear的变更情况 更新currPtr、prevPtr、size、position。
->访问:
Poina a(2,3);
Point* ptr = &a;
通过指针访问对象成员 ptr->getx() == (*ptr).getx
|