DLinkList createDLinkList(int n) { DLinkList head = (LNode*)malloc(sizeof(LNode)); head->prev = NULL; head->next = NULL; DLinkList tail = head; for (int i = 0; i < n; i++) { DLinkList p = (LNode*)malloc(sizeof(LNode)); p->data = i + 1; p->prev = tail; p->next = NULL; tail->next = p; tail = p; } return head; }
时间: 2024-04-04 12:29:10 浏览: 15
这段代码是用来创建双向链表的,其中的参数 n 表示需要创建的链表节点个数。它首先创建一个头结点 head,然后将尾节点 tail 初始化为 head。在 for 循环中,它创建一个新的节点 p 并将其插入到尾节点 tail 的后面,然后将 tail 指向 p,以便下一次循环可以将新的节点插入到它后面。最后,它返回头结点 head。这段代码的时间复杂度为 O(n),因为它需要对链表中的每个节点都进行一次插入操作。
相关问题
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; }
这段代码实现了在双向链表中指定位置插入节点的操作。在函数`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`。
这样就完成了在双向链表中指定位置插入节点的操作。
void InsertDLinkList(DLinkList& L) { DNode* m = L; int temp; cout << "请输入要添加的数值." << endl; cin >> temp; while (temp != -1) { DNode* n = (DNode*)malloc(sizeof(DNode)); if (n == NULL) { cout << "内存不足,分配失败" << endl; return; } n->next = m->next; n->prior = m; n->data = temp; m->next = n; m = m->next; cin >> temp; }
这段代码实现了双向链表的插入操作。在函数`InsertDLinkList`中,通过输入要添加的数值,将其插入到双向链表中。
首先,定义一个指针`m`指向链表头节点`L`。
然后,通过循环输入要添加的数值,直到输入-1为止。在循环中,首先创建一个新的节点`n`,并进行内存分配。如果内存分配失败,则输出提示信息并返回。
接下来,将新节点`n`插入到链表中。将`n`的next指针指向`m`的next指针所指向的节点,将`n`的prior指针指向`m`,将`n`的data值设置为输入的数值。然后,将`m`的next指针指向`n`,更新`m`为当前节点。
最后,在每次循环结束后,再次输入要添加的数值。
这样就完成了双向链表的插入操作。
相关推荐
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)