delete.h

来自「南京航空航天大学王珊珊出版的C++详细课后习题程序集和PPT课件.」· C头文件 代码 · 共 35 行

H
35
字号
node *Delete_one_node( node *head,  int num )
{    
    node *p1, *p2;
    if( head == NULL)  // 处理链表为空时的状况
	{
		cout << "链表为空,无结点可删!\n";
		return(NULL);
	}
	if( head->data == num) // 若待删除的结点为首结点
	{
		p1=head;
		head=head->next;
		delete p1;
		cout << "删除了一个结点!\n";
	}
	else  // 删除其他结点
	{
		p1=head; 
		p2= head->next;   // p1指向的结点在p2指向的结点之前
		while(p2->data != num&&p2->next !=NULL ) //先循环查找待删除结点
		{       //若p2指向的结点不是待删除结点,并且也不是尾结点时循环
			p1=p2; 
			p2=p2->next; // p1,p2均向后挪动一个结点
		}
		if(p2->data == num)  // 若找到, 删除p2指向的结点
		{      // 注意:若p2指向的结点是链尾结点,这里的处理同样适用
			p1->next = p2->next;
			delete p2;
			cout << "删除了一个结点!\n";
		}
		else cout<<num<<"链表上没有找到要删除的结点!\n";
    }
	return(head);
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?