求数据结构中双向链表的插入一个结点有顺序要求么?
我在严蔚敏(数据结构c语言)的书上看到他是这个顺序
但是在教学视频上看到的是这样的
那我资料上又是这样的
资料上的算不算是知道直接前驱和直接后继结点? 是不是算是视频里的第二种了?
或者是不是因为视频里是给的直接前驱结点所以有顺序 而资料和书上都是给的直接后继结点所以没有顺序要求?
lz的这个问题是一个很容易让人迷糊的问题。我来解释一下:struct node {struct node* prev;struct node* next;}*p, *q;// 这里指针p和q的赋值操作省去q->prev = p->prev; // -- 1q->next = p; // -- 2p->prev->next = q; // -- 3p->prev = q; // -- 4这里因为没有存下p的前一个指针,所以有顺序要求:1. 语句4必须在1和3之后。(因为4中将p->prev赋新值之后,就无法得到原来p前的那个节点,所以这句留在最后)2. 其他顺序任意。
热门标签: