链表:单链表插入和删除一个节点的伪代码算法

一.删除节点:如果链表长度为0,则退出;
反之,如果要删除的元素为头节点,则将头节点移至下一个节点;
如果要删除的元素为末节点,则将末节点移至上一个节点;
反之,则将第i-1个元素指针域指向第i+1个元素;
释放已删除节点的内存,返回。
struct link DeleteNode (struct link head, int nodeData)
struct link p = head, pr = head
if (head == NULL)
return 0
else
while (nodeData != p->data)
pr = p
p = p->next
if (p == head)
head = p->next
else
pr->next = p->next
free(p)
return 0
二.插入节点:如果链表长度为0,则将新节点作为头节点;
反之,如果要插入的位置为头节点前,则将头节点的指针域指向头节点;
如果要插入的位置为末节点后,则将末节点的指针域指向新节点;
反之,将将新节点的指针域之下一节点,且让前一节点的指针域指向新节点。
struct link InsertNode(struct link head, int nodeData)
struct link p = head, pr = head,temp = NULL
if (head == NULL)
head = p
else
while (nodeData != p->data)
temp = pr
pr = pr->next
if (pr == head)
p->next = head
head = p
else
pr = temp;
p->next = pr->next
pr->next = p
else (pr==terminal node)
pr->next = p
return 0
三.参考资料:链表(单向链表的建立、删除、插入、打印)

原文地址:https://www.cnblogs.com/20201212ycy/p/14020994.html