读书人

二级指针兑现单向链表的插入和删除

发布时间: 2013-07-08 14:13:00 作者: rapoo

二级指针实现单向链表的插入和删除
链表节点结构就用最简单的结构表示吧
struct NODE {
int count;
struct NODE *next
}

struct NODE **node;

怎样利用节点的二级指针来实现单向链表的插入和删除?

譬如说例如知道要在当前节点 current 之前插入一个新节点 new。
current为节点的二级指针,struct NODE **current。
new 为一级指针,struct NODE *new = malloc(sizeof(struct NODE))。

归结来说就是怎么用二级指针current寻找父节点 或 怎样使父节点中的子节点指针指向new?

想了很久没想出来啊....

二级指针 单向链表 前插 删除
[解决办法]

引用:
应该还有其他条件的,这样是找不到的

node如果是头的话就可以


whie (STRUCT NODE *p=*node; p->next!=NULL && p->next!=*current && ; p=p->next)

大致这样. 如果只有一个节点需要特殊处理


[解决办法]
struct NODE {
int count;
struct NODE *next
}

struct NODE **node;

// 前提是node == &prev_node->next && *node != head

int insert(struct NODE **node, struct NODE *new)
{
if (*node==NULL
[解决办法]
new==NULL)
return -1;
{
struct NODE *prev = (struct NODE *)((char*)node - ((struct NODE *)0)->next);
new->next = prev-next;
prev->next = new;
}
return 0;
}

int delete(struct NODE **node)
{
if (*node==NULL)
return -1;
{
struct NODE *prev = (struct NODE *)((char*)node - ((struct NODE *)0)->next);
prev->next = (*node)->next;
}
return 0;
}

读书人网 >C语言

热点推荐