C实现头插法和尾插法来构建非循环双链表(不带头结点)
来源:互联网 发布:淘宝优惠券领取faquan 编辑:程序博客网 时间:2024/09/21 09:03
在实际使用中,双链表比单链表方便很多,也更为灵活。对于不带头结点的非循环双链表的基本操作,我在《C语言实现双向非循环链表(不带头结点)的基本操作》这篇文章中有详细的实现。今天我们就要用两种不同的方式头插法和尾插法来建立双链表。代码上传至 https://github.com/chenyufeng1991/HeadInsertAndTailInsertDoubleList 。
核心代码如下:
//尾插法创建不带头结点的非循环双向链表Node *TailInsertCreateList(Node *pNode){ Node *pInsert; Node *pMove; pInsert = (Node*)malloc(sizeof(Node)); memset(pInsert, 0, sizeof(Node)); pInsert->next = NULL; pInsert->prior = NULL; scanf("%d",&(pInsert->element)); pMove = pNode; if (pInsert->element <= 0) { printf("%s函数执行,输入数据非法,建立链表停止\n",__FUNCTION__); return NULL; } while (pInsert->element > 0) { if (pNode == NULL) { pNode = pInsert; pMove = pNode; }else{ pMove->next = pInsert; pInsert->prior = pMove; pMove = pMove->next; } pInsert = (Node *)malloc(sizeof(Node)); memset(pInsert, 0, sizeof(Node)); pInsert->next = NULL; pInsert->prior = NULL; scanf("%d",&(pInsert->element)); } printf("%s函数执行,尾插法建立链表成功\n",__FUNCTION__); return pNode;}//头插法创建不带头结点的非循环双向链表Node *HeadInsertCreateList(Node *pNode){ Node *pInsert; pInsert = (Node *)malloc(sizeof(Node)); memset(pInsert, 0, sizeof(Node)); pInsert->next = NULL; pInsert->prior = NULL; scanf("%d",&(pInsert->element)); if (pInsert->element <= 0) { printf("%s函数执行,输入数据非法,建立链表停止\n",__FUNCTION__); return NULL; } while (pInsert->element > 0) { if (pNode == NULL) { pNode = pInsert; }else{ pInsert->next = pNode; pNode->prior = pInsert; pNode = pInsert; } pInsert = (Node *)malloc(sizeof(Node)); memset(pInsert, 0, sizeof(Node)); pInsert->next = NULL; pInsert->prior = NULL; scanf("%d",&(pInsert->element)); } printf("%s函数执行,头插法建立链表成功\n",__FUNCTION__); return pNode;}
1 0
- C实现头插法和尾插法来构建非循环双链表(不带头结点)
- C实现头插法和尾插法来构建双向非循环链表(带头结点尾结点)
- C实现头插法和尾插法来构建单链表(带头结点)
- C实现头插法和尾插法来构建单链表(不带头结点)
- C语言实现非循环双链表节点的删除(不带头结点)
- C语言实现双向非循环链表(不带头结点)的基本操作
- C语言实现双向非循环链表(不带头结点)的逆序打印
- C语言实现双向非循环链表(不带头结点)的节点插入
- C语言实现双向非循环链表(不带头结点)的清空
- C语言实现非循环双链表节点的删除(带头结点尾结点)
- C语言实现双向非循环链表(带头结点尾结点)的基本操作
- C语言实现双向非循环链表(带头结点尾结点)的节点插入
- 经典算法学习——非循环双向链表实现冒泡排序(不带头结点)
- C语言实现单链表(不带头结点)
- 不带头结点的单链表的实现(C语言)
- C语言实现单链表-不带头结点
- 带头结点和不带头结点的尾插法建立双链表
- 不带头结点的头插法和尾插法
- 机器学习之岭回归
- Fibonacci数列问题
- eclipse IDE引入dtd和xsd文档约束
- 最大公约数与欧几里德算法
- Android的四种启动模式
- C实现头插法和尾插法来构建非循环双链表(不带头结点)
- 创建,增加,删除mysql表分区
- Spring中加载配置xml文件的方法
- POJ 2385 Apple Catching
- 机器学习路线图(附资料)
- 使用maven的jetty插件项目一直报编译版本的错误
- Android学习之ListView与适配器
- 58怎么玩数据库架构
- 正则表达式Greedy、Reluctant、Possessive三种策略的区别