双链表的插入学习(C和指针)
来源:互联网 发布:深圳华夏软件学校招生 编辑:程序博客网 时间:2024/04/30 13:32
在一个双链表中,每个节点都包含两个指针——指向前一个节点的指针和指向后一个节点的指针。
typedef struct NODE {
struct NODE *fwd;
struct NODE *bwd;
int value;
}Node;
/*
** 把一个新值插入到一个双链表中。rootp是一个指向根节点的指针,
** value是需要插入的新值。
** 返回值:如果链表原先已经存在这个值,函数返回0.
** 如果为新值分配内存失败,函数返回-1.
** 如果新值成功地插入到链表中,函数返回1.
*/
int dll_insert(register Node *rootp, int value)
{
register Node *this;
register Node *next;
register Node *newnode;
//查看value是否已经存在于链表中,如果是就返回。否则,为新值创建一个新节点("newnode"将指向它)。
//"this"将指向应该在新节点之前的那个节点,"next"将指向应该在新节点之后的那个节点。
for (this=rootp; (next=this->fwd)!=NULL; this=next)
{
if (next->value == value)
return 0;
if (next->value > value)
break;
}
newnode = (Node *)malloc(sizeof(Node));
if (newnode == NULL)
return -1;
newnode->value = value;
//把新节点添加到链表中
newnode->fwd = next;
this->fwd = newnode;
if (this != rootp)
newnode->bwd = this;
else
newnode->bwd = NULL;
if (next != NULL)
next->bwd = newnode;
else
rootp->bwd = newnode;
return 1;
}
typedef struct NODE {
struct NODE *fwd;
struct NODE *bwd;
int value;
}Node;
/*
** 把一个新值插入到一个双链表中。rootp是一个指向根节点的指针,
** value是需要插入的新值。
** 返回值:如果链表原先已经存在这个值,函数返回0.
** 如果为新值分配内存失败,函数返回-1.
** 如果新值成功地插入到链表中,函数返回1.
*/
int dll_insert(register Node *rootp, int value)
{
register Node *this;
register Node *next;
register Node *newnode;
//查看value是否已经存在于链表中,如果是就返回。否则,为新值创建一个新节点("newnode"将指向它)。
//"this"将指向应该在新节点之前的那个节点,"next"将指向应该在新节点之后的那个节点。
for (this=rootp; (next=this->fwd)!=NULL; this=next)
{
if (next->value == value)
return 0;
if (next->value > value)
break;
}
newnode = (Node *)malloc(sizeof(Node));
if (newnode == NULL)
return -1;
newnode->value = value;
//把新节点添加到链表中
newnode->fwd = next;
this->fwd = newnode;
if (this != rootp)
newnode->bwd = this;
else
newnode->bwd = NULL;
if (next != NULL)
next->bwd = newnode;
else
rootp->bwd = newnode;
return 1;
}
0 0
- 双链表的插入学习(C和指针)
- C 语言指针,单指针和双指针的学习
- (c/c++学习笔记八)指针数组和指针的指针
- C和指针学习
- C和指针学习
- C和指针学习
- 学习《C和指针》
- 《C和指针》学习
- 《C和指针》学习
- 每天学习的点滴--c和指针
- 关于《C和指针》的学习笔记
- 单链表插入函数优化(C和指针)
- C和指针学习笔记(1)
- C和指针学习笔记 (1)
- 《C和指针》学习笔记(二)
- 《C和指针》学习笔记(三)
- 《C和指针》学习笔记(四)
- 《C和指针》学习笔记(五)
- 抢红包背后的技术点
- liferay中自定义字段及部分路由说明
- k-means算法学习
- Codeforces Round #379 (Div. 2) -- D. Anton and Chess (if else 的水题)
- Python 内置函数 locals()和 globals()
- 双链表的插入学习(C和指针)
- Unity3D都有哪些坑
- TCP/IP和UDP的基础理解(1)
- 使用conlleval.pl对CRF测试结果进行评价的方法
- 扯淡nginx的sendfile零拷贝的概念
- [基于ionic开发]开发教程lesson01之环境安装
- Spring jpa配置
- js通过opcity来实现轮播
- ATMega328P-PU芯片Arduino最小系统实验