一、问题背景:
舍友在学习链表的定义时,出现了无法建立头结点与新增节点之间联系的问题,经分析,发现了指针在解决该问题中的十分巧妙的应用。
二、问题重述与归结
问题出现在代码行22,23,33,34。
{
headp = newp;
tailp = newp;
//然后又重新更新了newp
newp = (node *)malloc(sizeof(struct node));
tailp->next = newp;
tailp = newp;
}
以上的代码,出现了两个指针等于一个指针,然后又对其中一个指针进行操作,最后更是出现了更加让人难以理解的指针更新。于是该问题总结归述为:在用三个互相联系的指针之间的关系处理。
三、问题解析
图例中我们看到,当headp与tailp都指向了n节点的时候,操作tailp就相当于操作了n节点,相应的headp的性质也随之改变。
在这里我们要说明的是,在普通变量的赋值与操作中,改变一个变量的性质对其他变量是没有任何影响的,而在指针操作中是大不相同的。数据结构里的很多算法都是为了能够简便的实现操作,利用指针进行大量的优化是十分常见的。
时刻理解所有的指针的意义。
PS:初来驾到,这是第一篇博客,其实也不算什么博客,只不过是在学习中的一点小突破,小成就,希望能够一直坚持写下去。