Java数据结构与算法学习之双向链表

网友投稿 277 2022-09-06


Java数据结构与算法学习之双向链表

目录双向链表的储存结构示意图双向链表的初始化结构1.双向链表的结点2.双向链表的头结点3.总代码双向链表中的指定文件插入元素1.插入的为第一个位置2.其他位置插入总代码双向链表的删除1.删除第一个元素2.删除其他位置元素总代码

双向链表的储存结构示意图

双向链表的初始化结构

1.双向链表的结点

代码实现

//双向链表的结点,包含一个数据域,两个指针域

typedef struct DoublyNode {

ElementType date; //数据域

struct DoublyNode* prev; //指向前缀结点

struct DoublyNode* next; //指向后缀结点

}DoublyNode;

2.双向链表的头结点

//双向链表

typedef struct DoublyLinkList {

int length;

DoublyNode* next;

};

3.总代码

//双向链表的结点,包含一个数据域,两个指针域

typedef struct DoublyNode IlVhhU{

ElementType date; //数据域

struct DoublyNode* prev; //指向前缀结点

struct DoublyNode* next; //指向后缀结点

}DoublyNode;

//双向链表

typedef struct DoublyLinkList {

int length;

DoublyNode* next;

};

双向链表中的指定文件插入元素

1.插入的为第一个位置

代码实现

2.其他位置插入

代码实现

总代码

void InsertDoublyLinkList(DoublyLinkList* dlist, int pos, ElementType element) {

//创建空节点

DoublyNode* node = (DoublyLinkList*)malloc(sizeof(DoublyLinkList));

node->date = element;

node->prev = NULL;

node->next = NULL;

//在第一个位置插入结点

if (pos == 1) {

node->next = dlist->next;

dlist->next = node;

node->next->prev = node;

dlist->length++;

return;

}

DoublyLinkList* currNohttp://de = dlist->next;

for (int i = 1; currNode && i < pos - 1; i++) {

currNode = currNode->next;

}

if (currNode) {

node->prev = currNode;

if (currNode->next) {

//如果前置结点非空->因为空就表示没有后继结点了

//将插入位置的前置结点改为指向新结点

currNode->next->prev = node;

}

node->next = currNode->next;

currNode->next = node;

dlist->length++;

}

}

双向链表的删除

1.删除第一个元素

代码实现

2.删除其他位置元素

代码实现

总代码

void DeleteDoublyLinkList(DoublyLinkList* dlist, int pos) {

if (pos == 1) {

DoublyLinkList* node = dlist->next;

if (node) {

dlist->next;

if (node->next) {

//如果哟有第二个结点,那么设置第二个结点的前置结点为NULL

node->next->prev = NULL;

}

free(node);

dlist->length--;

}

return;

}

DoublyLinkList* node = dlist->next;

for (int i = 1; i < pos; i++) {

node = node->next;

}

if (node) {

if (node->next) {

node->next->prev = node->prve;

}

node->prev->next = node->next;

free(node);

dlist->length--;

}

return;

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:由扫雷演化来的一个问题
下一篇:#yyds干货盘点#元组运算符 - python基础学习系列(75)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~