7.2.1有疑问
weikano opened this issue · comments
原文中提到
最简单的栈就是链表, head指针指向第一个节点(可能是下一个被索引到的节点), 并且每个节点依次指向下一个节点。
在这样的情况下,添加一个节点相对来说很简单:
- 创建一个新节点
- 将新节点的next指针指向当前的head节点
- 让head节点指向新节点
举个栗子,head->A->B,新添加一个节点C,最后不应该是head->C->A->B吗?
const node* C = new node(c);
C->next = head->next; //C->next指向A->B
head->next = C; //head->next指向C->A->B
不知道是不是我理解的有问题?
你理解的是对的。
这里是要实现的栈结构,先入后出。
head指针指向的的就是下一个要出栈的node。
拿你的例子,head->A->B,新添加一个节点C。
因为先入后出的原则,那么下一个要出栈的元素就是C,所以是head->C->A->B没有问题。
嗯,其实我不太清楚你的疑惑点在哪里
- 将新节点的next指针指向当前的head指针
- 让head节点指向新节点
第2步不应该将新节点的next指针指向head的next吗?
第3步才是修改head->next指向新节点?
这里的确是有误的。
我将push和pop的逐个列出的过程都修改了,就是对这里1,2,3...里面的内容进行了修改。
这里就脱离原文了,这里需要描述的更加准确些,这样便于理解,