链表的构造与删除

#include<iostream>  
#include<stdlib.h>  
using namespace std;  
typedef struct NODE
{
	int score;
	struct NODE *next;
}node,*link;
link head,pnew,pold,temp;

void charu(int beg,int end)
{
	if(head==NULL)
	{
		pnew=new node;
	    pnew->next =NULL;
		pnew->score =end;
		head=pnew;
		//pold=pnew;
	}
	pnew=new node;
	pnew->next =NULL;
	pnew->score =beg;
	temp=head;
	while(temp->score !=end)
		temp=temp->next; 
	if(temp->next ==NULL)
	{
		temp->next =pnew;
	}
	else 
	{
		pnew->next =temp->next;
		temp->next =pnew;
	}
}
void shanchu(int logo)
{
	pold=head;
	while(pold->next->next!=NULL)
	{
		if(pold->score ==logo)
		{
			temp=pold;
			pold=pold->next ;
			head=pold;
			delete temp;
		}
		else if(pold->next->score ==logo)
		{
			pold->next =pold->next->next ;
			temp=pold->next ;
			pold=pold->next ;
			delete temp;           
		}
		else
			pold=pold->next ;
	}
	if(pold->next->score ==logo)
	{
		temp=pold->next ;
		pold->next =NULL;
		delete temp;
	}
}
int main()  
{ 
	
	int num;
	int logo=2;
	int qian[20],hou[20];
	int i=0;
	cin>>num;
	for(int i=0;i<num;i++)
	{
         cin>>qian[i]>>hou[i];
	}
	for(int n=0;n<num;n++)
		charu(qian[n],hou[n]);
	pold=head;
	while(pold!=NULL)
	{
		cout<<pold->score ;
		pold=pold->next ;
	}
	shanchu(logo);
	pold=head;
	while(pold!=NULL)
	{
		cout<<pold->score ;
		pold=pold->next ;
	}
	system("pause");  
    return 0;    
}  

输入一个单向链表和一个节点的值,从单向链表中删除等于该值的节点,删除后如果链表中无节点则返回空指针。

链表结点定义如下:

struct ListNode

{

      int       m_nKey;

      ListNode* m_pNext;

};

详细描述:

本题为考察链表的插入和删除知识。

链表的值不能重复

构造过程,例如

1 -> 2

3 -> 2

5 -> 1

4 -> 5

7 -> 2

最后的链表的顺序为 2 7 3 1 5 4 

删除 结点 2 

则结果为 7 3 1 5 4 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值