首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2013-07-08 
二级指针实现单向链表的插入和删除链表节点结构就用最简单的结构表示吧struct NODE {int countstruct NOD

二级指针实现单向链表的插入和删除
链表节点结构就用最简单的结构表示吧
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;
}

热点排行