如何实现双向链表
答案:2 悬赏:50 手机版
解决时间 2021-03-13 21:59
- 提问者网友:伴风望海
- 2021-03-13 16:52
如何实现双向链表
最佳答案
- 五星知识达人网友:一把行者刀
- 2021-03-13 17:44
单向链表:每个链表节点都有一个next指针,通过名字知道,next存放的是下一个节点的位置,从而串起来的数据结构。
双向链表:每个链表节点除了next指针外还有prev指针。哪个节点next指针指向我,我的prev就指向那个节点。
typedef int ElementType;
typedef struct _NODE
{
struct NODE * next;
struct NODE * prev;
ElementType e;
} NODE;
typedef struct _LIST
{
NODE * head;
unsigned int count;
} LIST;
#define __prev
双向链表在确定节点前面插入是不用遍历链表的。
我写一个函数,在一个指定节点前插入一个节点的,其他的就类似了:
NODE * InsertToList( __ prev NODE * node, ElemType elem)
{
if (! list || ! node)
return NULL;
NODE * p = (NODE *)malloc(sizeof(NODE));
if (! p)
return NULL;
p ->e = elem;
p ->prev = node ->prev;
node ->prev ->next = p;
node ->prev = p;
p ->next = node;
return p;
}
双向链表:每个链表节点除了next指针外还有prev指针。哪个节点next指针指向我,我的prev就指向那个节点。
typedef int ElementType;
typedef struct _NODE
{
struct NODE * next;
struct NODE * prev;
ElementType e;
} NODE;
typedef struct _LIST
{
NODE * head;
unsigned int count;
} LIST;
#define __prev
双向链表在确定节点前面插入是不用遍历链表的。
我写一个函数,在一个指定节点前插入一个节点的,其他的就类似了:
NODE * InsertToList( __ prev NODE * node, ElemType elem)
{
if (! list || ! node)
return NULL;
NODE * p = (NODE *)malloc(sizeof(NODE));
if (! p)
return NULL;
p ->e = elem;
p ->prev = node ->prev;
node ->prev ->next = p;
node ->prev = p;
p ->next = node;
return p;
}
全部回答
- 1楼网友:空山清雨
- 2021-03-13 18:50
实现带表头结点的双向链表,要求所实现的程序有简单的dos界面,方便用户进行//双向链表环 { uint32 len=0,i=0,j=0; nodeslink *root,*current
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯