void InsertDNode(DLinkList& L, int a, int b) { DNode* temp = (DNode*)malloc(sizeof(DNode)); temp->next = NULL; temp->prior = NULL; temp->data = b; if (temp == NULL) { cout << "内存不足,分配失败" << endl; return; } DNode* n = L; while (a != 1) { n = n->next; a--; } temp->prior = n; temp->next = n->next; n->next = temp; }
时间: 2023-07-30 21:11:12 浏览: 84
dlinklist.cpp
这段代码实现了在双向链表中指定位置插入节点的操作。在函数`InsertD`中,通过参数`a`指定要插入的位置,参数`b`定要插入的节点数据。
首先,一个新的节点`temp`,并进行内存分配。将`temp`的next和prior指针初始化为NULL,将`temp`的data值设置为输入的数值。
然后,判断内存分配是否成功。如果分配失败,则输出提示信息并返回。
接下来,定义一个指针`n`指向链表头节点`L`。
通过循环,将指针`n`移动到要插入位置的前一个节点。循环条件是当`a`不等于1时,即还未移动到要插入位置前一个节点。在循环中,将指针`n`向后移动一位,并将`a`减1。
然后,将新节点`temp`插入到链表中。将`temp`的prior指针指向节点`n`,将`temp`的next指针指向节点`n->next`,将节点`n->next`的prior指针指向节点`temp`,最后将节点`n`的next指针指向节点`temp`。
这样就完成了在双向链表中指定位置插入节点的操作。
阅读全文