void sertbefore(Node** phead, Node* pos, int x)//在pos之前插入(适合双向链表)
{
assert(phead);
assert(pos);
if (*phead == pos)
{
toucha(phead, x);
}
else
{
Node* prev = *phead;
while (prev->next != pos)
{
prev = prev->next;
}
Node* newnode = buynode(x);
prev->next = newnode;
newnode->next = pos;
}
}
void sertafter(Node** phead, Node* pos, int x)//在pos之后插入(适合单链表)
{
assert(pos);
Node* newnode = buynode(x);
newnode->next = pos->next;
pos->next = newnode;
}
void erase1(Node** phead, Node* pos)//删除pos位置的值
{
if (pos == *phead)
{
toushan(phead);
}
else
{
Node* prev = *phead;
while (prev->next != pos)
{
prev = prev->next;
}
prev->next = pos->next;
free(pos);
}
}
void eraseafter(Node** phead, Node* pos)//删除pos位置后面的值
{
assert(pos);
assert(pos->next);
Node* next = pos->next;
pos->next = next->next;
free(next);
}
单项链表的任意位置插入/删除函数
于 2023-12-27 22:19:20 首次发布