// -------------------------------------------------------
//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;
}
// -------------------------------------------------------

建立带头结点的双向链表_尾插法相关推荐

  1. 带头结点的头插法和尾插法创建单链表

    首先我们先定义一个链表的结构体. typedef int DataType; typedef struct Node {DataType data;struct Node* next; }*SLNod ...

  2. 单链表的建立(C语言):头插法和尾插法建立单链表

    采用头插法建立单链表 该方法从一个空表开始,生成新结点,并将读取到的数据存放到新结点的数据域中,然后将新结点插入到当前链表的表头,即头结点之后,如图2-4所示. 图2-4  头插法建立单链表 头插法建 ...

  3. 不带头结点建立单链表(头插法、尾插法)

    #include<iostream> using namespace std; #include<stdlib.h> typedef int ElemType; typedef ...

  4. 头插法和尾插法创建链表(有无头结点)

    头插法和尾插法创建链表(有无头结点) 文章目录 头插法和尾插法创建链表(有无头结点) 1 头插法 1.1头插法建表规则: 1.2 头插法建表代码实现 2 尾插法 2.1 尾插法建表规则: 2.2 尾插 ...

  5. C语言-链表的创建头插法和尾插法(有无头节点)

    文章目录 结构声明 1 头插法(有头节点) 2 头插法(无头节点) 3 尾插法(有头节点) 4 尾插法(无头节点) 结构声明 typedef int ElementType;typedef struc ...

  6. 数据结构专题(二):2.3链表插入元素,尾插法

    因为结构内存的差异,所以有头插法和尾插法两种形式. 本章博客主要讲解头插法 操作流程如下图 如下代码: ///插入元素,在指定的位置插入给定的值 //因为链表这种结构的内存是由程序员管理的,因此他的建 ...

  7. 数据结构(使用尾插法实现单链表)

    1.线性表的链式存储就是单链表,单链表通过一组任意的存储单元来存储线性表的数据元素(逻辑相邻,存储离散),单链表对于每一个链表结点,不但存储自身数据,还开辟了存储一个指向后继结点的指针. 2.单链表相 ...

  8. 数据结构-头插法和尾插法

    数据结构--八大算法总结(最详细) 头插法 void HeadCreatList(List *L) //头插法建立链表 { List *s; //不用像尾插法一样生成一个终端节点. L->nex ...

  9. [数据结构]头插法与尾插法

    #include "stdio.h" #include "stdlib.h" typedef struct List {int data; //数据域struc ...

最新文章

  1. [CSU1911]Card Game
  2. 8天学通MongoDB——第六天 分片技术
  3. Redis 总结精讲
  4. Linux 系统常用命令汇总(二) vi 文本编辑
  5. 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)
  6. 你所不知道的Redis热点问题以及如何发现热点
  7. 【笔记】Java如何判断是IDE启动还是jar启动
  8. 数据库系统概论总结(第五版)
  9. 专访方立勋:开发者应该保持好奇和热情
  10. 4.jvm入门到精通
  11. 游戏后台管理模块开发流水账
  12. 电脑重置,win10怎么重置此电脑 重置电脑的方法和后果
  13. 苹果邮箱怎么登录qq邮箱_qq邮箱app下载安装-手机QQ邮箱2020下载v6.1.0 官方安卓版...
  14. js写小游戏(打字母)
  15. 7.12 C语言练习(爬动的蠕虫:一条蠕虫长1寸,在一口深为N寸的井的底部。已知蠕虫每1分钟可以向上爬U寸,但必须休息1分钟才能接着往上爬。)
  16. ASIHTTPRequest 状态栏网络等待指示器
  17. MySQL 中出现的字符编码错误 Incorrect string value: ‘\x\x\x\x‘ for column ‘x‘
  18. 设计 QQ、微信、微博、Github 等第三方账号登陆
  19. HTML5期末大作业:服装商城网站设计——2021凡客服装商城(1页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web前端设计与开发期末作品/期末大作业
  20. leetcode汇总

热门文章

  1. 小程序 webview 分享_新的一周,分享15个好玩的小程序
  2. 机器学习从理论到工程的第二步-开发环境与工具篇(下)
  3. 最全Java面试208题,涵盖大厂必考范围!强烈建议收藏~
  4. 月圆花美 中秋快乐!
  5. 论文浅尝|简单高效的知识图谱表示学习负样本采样方法
  6. 优动漫PAINT核心功能介绍
  7. python数据图形化—— matplotlib 基础应用
  8. BZOJ2741 【FOTILE模拟赛】L 【可持久化trie + 分块】
  9. Petya and Staircases CF212div.2B
  10. log4net保存到数据库系列二:独立配置文件中配置log4net