单链表 c++

#include<string>
#include<iostream>
using namespace std;
/*构建一个升序链表*/
 typedef struct node{
    string address;
	int temp;
	struct node *next;
}Link;

Link* Head;   //声明一个虚拟节点——头结点
int NodeCount;

//初始化链表
void CreateList(void)
{
	//初始化链表
	Head =new Link;   //定义,初始化
	Head->next=NULL;   //Head->next=NULL用于表示链表结束
	NodeCount=0;
}
/*有序插入*/
void insert_Node(string viraddress,int mtemp)
{
	Link *pn=new Link; 
	pn->address=viraddress;
	pn->temp=mtemp;
	Link *pre;
	Link *curr;
	pre=Head;
	curr=Head->next;

	//定位插入点,由于加入了头结点,只要找到插入点,在链表的任何位置的插入操作都一致~
	while(curr!=NULL&&curr->temp<pn->temp)
	{
		pre=curr;
		curr=curr->next;
	}
	//插入操作
	pn->next=pre->next;
	pre->next=pn;
	
	NodeCount++;
	cout<<"插入成功"<<endl;
}
/*删除操作*/
int delete_Node(int mtemp)
{
	//考虑删除成功和删除失败两种情况
	Link *pre=Head;
	Link *curr=Head->next;
	while(curr!=NULL&&curr->temp!=mtemp)
	{
		pre=curr;
		curr=curr->next;
	}
	if(curr==NULL)  //链表为空或无mtemp两种情况
	{
		cout<<"删除元素失败"<<endl;
		return 0;
	}
	else
	{
		pre->next=curr->next;
		NodeCount--;
		cout<<"删除成功"<<endl;
		return 1;
	}
}
/*搜索某元素,返回结点*/
Link* find_Node(int mtemp)
{
	Link *curr=Head;
	while(curr!=NULL&&curr->temp!=mtemp)
		curr=curr->next;
	return curr;

}
int main()
{
	
	CreateList();
	string add="shandong";
	insert_Node(add,30);
	add="harbin";
	insert_Node(add,35);
	delete_Node(30);
	delete_Node(31);
	Link *t=find_Node(35);
	cout<<t->address<<endl;
	return 0;
}


转载于:https://my.oschina.net/ingu5102/blog/476243

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值