【C】单向链表和双向链表的插入
来源:互联网 发布:软件开发服务合同 编辑:程序博客网 时间:2024/05/17 07:10
typedef struct NODE { struct NODE *link; int value;} Node;typedef struct DNODE { struct DNODE *fwd; struct DNODE *bwd; int value;} Dnode;# s11_node.h ################include <stdio.h>#include <stdlib.h>#include "s11_node.h"#define FALSE 0#define TRUE 1int d11_insert(register Dnode *proot,int value){ register Dnode *this; register Dnode *next; register Dnode *newnode; /** * 查查value是否存在链表中,如果是就直接返回 * 否则为值创建一个新节点(“newnode”将指向它) * this指向新节点之前那个节点 * next指向新节点之后那个节点 */ for(this=proot; (next = this->fwd) != NULL; this = next){ if (next->value == value) return FALSE; if(next->value > value) break; } newnode = (Dnode *)malloc(sizeof(Dnode)); if(newnode == NULL) return FALSE; newnode->value = value; /*新节点添加到链表中*/ newnode->fwd = next; this->fwd = newnode; if(this != proot) newnode->bwd = this; else newnode->bwd = NULL; if(next != NULL) next->bwd = newnode; else proot->bwd = newnode; return TRUE;}/** * 单向链表有序插入 */int s11_insert(register Node **plink, int new_value){ register Node *current; register Node *new; /*寻找正确的插入位置*/ while((current = *plink) != NULL && current->value < new_value){ plink = ¤t->link; } /*为新节点分配内存*/ new = (Node *)malloc(sizeof(Node)); if(new == NULL){ return FALSE; } new->value = new_value; /*链表中插入新节点*/ new->link = current; *plink = new; return TRUE;}int main(int argc, char **argv){ Node *p1; p1 = NULL; int i; for(i=0;i<20;i+=2) s11_insert(&p1,i); s11_insert(&p1, 15); while(p1!=NULL){ printf("%d\n",p1->value); p1 = p1->link; } return EXIT_SUCCESS;}# main.c ######
阅读全文
0 1
- 【C】单向链表和双向链表的插入
- 单向链表的插入、查找和遍历方法 (c)
- 单向链表和双向链表
- Java实现链表(单向和双向)
- 反转单向和双向链表简化
- [链表]-反转单向和双向链表
- java 单向和双向链表的详解
- C——(单向、单向循环、双向、双向循环)链表学习总结
- 双向链表的插入和删除
- 单向链表插入
- C语言中单向非循环链表的生成,遍历,排序,插入和删除
- C语言基础—数据结构之单向循环链表和双向循环链表
- 数据结构Java实现 --单向链表的插入和删除
- Java数据结构03----单向链表的插入和删除
- C语言实现双向链表删除、插入、双向输出
- 有序双向链表的插入 C语言实现
- C语言---双向链表的插入、删除、查找操作
- C语言---双向链表的插入、删除、查找操作
- Git小结(工作区篇)
- 负载均衡算法
- setControl
- java微信公众号开发,认证,自定义菜单,消息推送,网页跳转
- 【DDD】领域驱动设计精要
- 【C】单向链表和双向链表的插入
- 打印日志输出怎么不打印dao的sql语句
- EL表达式总结
- Android知识点整理(一)
- unity Reflection Probe
- Linux磁盘空间满,但实际占用却没有那么大
- 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换算法
- input--踩坑小记
- 前端零基础入门(三):HTML,CSS,Javascript三者之间的关系