单链表如何删除一节点?

Python09

单链表如何删除一节点?,第1张

将这个指针指向的next节点值copy到本节点,将next指向next->next,并随后删除原next指向的节点。

class node

{

public:

node(int x) : data(x), next(0){}

int data

node* next

}

void DelNode(node* pDel)

{

node* pTemp = pDel->next

memcpy(pDel, pTemp, sizeof(node))

pDel->next = pTemp->next

delete pTemp

}

一:允许打乱顺序

1) 排序

2)删除

二:不允许打乱顺序。

每次从第一个数据节点开始,从该节点后查找相同数据的节点,找到删除之。

Node *p,*q,*s

if(head==NULL || head->next==NULL)return

q=p=head->next

//单链表删除节点,必须持有前一个节点,否则无法删除。

while(p->next)//查找和节点p重复的节点,重复则删除。

{

q=p

s=q->next

while(s ){

if(s->data ==p->data){//重复判断,重复,要删除

q->next=s->next//从链表里删除

free(s)//实际删除节点,释放内存

s=q->next //保持s=q->next

}else {

//不重复,准备判断下一个节点,节点向链表后面移动。

q=s

s=s->next

}

}

if(p->next)

//

删除后,有可能链表,后面所有节点都删除了,所以要判断一下。

p=p->next//

节点后移,准备判断下一个数据节点,有没有重复节点。

}