线性结构的基本介绍到了这里就暂时告一段落。这篇文章主要是用来总结线性结构的一些特点跟应用的。线性结构是数据结构中的最基础的结构,以下的数据结构都是基于这个结构的。尤其是链表,树跟图的结构都可以由此衍生出来。
链表的遍历模式
通过之前的学习,我们知道我们当时写moveCursorBackward时,是通过遍历链表来找到cursor之前的一个。代码中使用while循环来进行遍历:
void EditorBuffer::moveCursorBackward() {
Cell *cp = start; //定义一个指针,指向链表的开始
if (cursor != start) {
while (cp->link != cursor) {
//当其指向的link不是当前cursor指向的单元格时
cp = cp->link; //更新cp的值
}
cursor = cp; //最终找到cursor指向的元素之前的位置,复制给当前的cursor
}
}
但是我们平时却更加喜欢使用For循环来进行遍历操作,因为这样我们就可以在循环中添加许多的操作。于是我们尝试着对while循环的内容进行改写:
for (cp = start; cp->link != cursor; cp = cp->link) {
/* Empty */
}
这样的表示就更加贴近我们平时的编程范式,指针从首指针开始,当cp指向的link指针