- 删除一个无头单链表的非尾节点(不能遍历链表)
例如:
无法获取1结点的位置,删除2结点
void RemoveNoFirst(ListNode* pos)
{
pos->data = pos->next->data;
ListNode* del = pos->next;
pos->next = pos->next->next;
free(del);
}
- 在无头单链表的一个节点前插入一个节点(不能遍历链表)
在3的后面插入一结点,将新插入结点的值和3结点的值交换
就可实现3结点前插入一个结点的功能
void InsertNoFirst(ListNode* pos, DataType data) {
if (pos == NULL) {
return;
}
ListNode* newNode = (ListNode *)malloc(sizeof(ListNode));
assert(newNode);
newNode->next = pos->next;
pos->next = newNode;
DataType temp = 0;
temp = pos->data;
pos->data = newNode->data;
newNode->data = temp;
}