欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

建立带头结点的双向链表_尾插法

发布时间:2024/7/23 编程问答 46 豆豆
生活随笔 收集整理的这篇文章主要介绍了 建立带头结点的双向链表_尾插法 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
// ------------------------------------------------------- //2014--03--14 // 建立双向链表 // 程序分析:双向链表的节点有两个指针域,一个指向直接前驱,另一个指向直接后继。 // 其中第一个节点的前驱指针为NULL ,最后一个节点的直接后继指针为NULL ; // -------------------------------------------------------#include <stdio.h> #include <time.h> #include <malloc.h> #include <stdlib.h> #include <iostream> using namespace std; // ------------------------------------------------------- //******************************************************* // 结构名:DouLNode ; // 结构说明:该结构为双向链表的节点结构 ,其中有两个指针,一个关键字 // 参数说明:data 关键字 // prior 指向直接前驱的指针 // next 指向后继节点的指针 //******************************************************* struct DouLNode {int data;DouLNode *prior;DouLNode *next ; }; // ------------------------------------------------------- //******************************************************* // 函数名:DouLinkCreate(); // 函数功能:建立一个双向链表, // 参数说明:head 为一个指向双向链表头节点的指针 // size 为双向链表节点的个数 // 注意:这里的双向链表带有头结点,利用的是尾插法。 //******************************************************* void DouLinkCreate(DouLNode *&head , int size ) {// 建立第一个节点,配置节点记忆体head = (DouLNode*)malloc(sizeof(DouLNode) );head->data = 0 ;head->prior= NULL ;head->next = NULL ;DouLNode * p = head; // 指向头结点for (int i =0;i<size ;++ i){DouLNode* q = (DouLNode*)malloc(sizeof(DouLNode) );q->data = i+1;q->next = NULL ;q->prior = p;p->next = q ;p = q ;}} // ------------------------------------------------------- int main() {DouLNode * head ;DouLinkCreate(head ,10 );DouLNode * p = head ;DouLNode * q = NULL ;p = p->next ;while (p != NULL ){cout << p->data << endl; // 从前往后输出q = p ;p = p->next ;}cout << endl;while (q != head ){cout << q->data << endl; // 从后往前输出q = q->prior ;}return 0; } // -------------------------------------------------------

总结

以上是生活随笔为你收集整理的建立带头结点的双向链表_尾插法的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。