我正在尝试制作一个链接列表,我在链接中间部分的概念上遇到了麻烦,我现在只是做了一点伪代码,实际上没有编码任何东西
(struct pointers) *current, *ahead, *behind, *begin;
(behind)-->(current)-->(ahead) //This is what I want to do
behind->next = current;
current->next = ahead;
这是打破和连接列表的正确方式吗?不丢失任何东西…
您所拥有的看起来是正确的,但相当不完整。编程的一个不成文的规则是,你不可能第一次就正确地编写链表实现。您需要处理以下四种情况:
- 插入空列表
- 插入非空列表
- 从列表中删除第一个元素
- 从列表中删除任何其他元素
也有双链表,其中每个元素都有指向前一个元素和下一个元素的指针。这使得在不遍历列表的情况下更容易处理诸如删除随机元素之类的事情,但要正确处理可能更加棘手。