数据结构与算法365天训练营—单链表的基本操作

定义结构类型

typedef struct LNode
{
	int data;  //结点的数据域 
	struct LNode *nextt;  //结点的指针域 
}LNode, *LinkList;  //Linklist为指向结构体LNode的指针类型

初始化

bool IniList_L(LinkList &L)//构造一个新的单链表L
{
	L=new LNode;  //生成新结点作为头结点,用头指针L指向头结点 
	if(!L)
		return 0;  //生成结点失败 
	L->next = NULL;  //头结点的指针域置空 
	return 1;
}

头插法创建单链表

void CreateList(LinkList &L)  //头插法创建单链表 
{
	//输入n个元素的值,建立到头结点的单链表L 
	int n;
	LinkList s;  //定义一个指针变量 
	L = new LNode;
	L->next = NULL;  //先建立一个带头结点的空链表 
	cout <<"请输入元素个数n:" <<endl;
	cin>>n;  //读取n个元素 
	cout <<"请依次输入n个元素:" <<endl;
	cout <<"前插法创建单链表..." <<endl;
	while(n--)
	{
		s = new LNode;  //生成新结点 
		cin>>s->data;  //输入元素值赋给新结点的数据域 
		s->next=L->next;  
		L->next=s;  //将新结点s插入到头结点之后 
	}
}

尾插法创建单链表

void CreateList_R(LinkList &L)  //尾插法创建单链表 
{
	//输入n个元素的值,建立到头结点的单链表L 
	int n;
	LinkList s,r; 
	L = new LNode;
	L->next = NULL;  //先建立一个带头结点的空链表
	r=L;  //尾指针r指向头结点 
	cout <<"请输入元素个数n:" <<endl;
	cin>>n;  //读取n个元素 
	cout <<"请依次输入n个元素:" <<endl;
	cout <<"尾插法创建单链表..." <<endl;
	while(n--)
	{
		s = new LNode;  //生成新结点 
		cin>>s->data;  //输入元素值赋给新结点的数据域 
		s->next=NULL;  
		r->next=s;  //将新结点s插入到尾结点*r之后 
		r=s;  //更新尾指针_r永远指向最后一个结点 
	}
}

单链表的取值

bool GetElem_L(LinkList L,int i, int &e)  //单链表的取值
{
	//在带头结点的单链表L中查找第i个元素
	//用e记录L中第i个数据元素的值
	int j;
	LinkList p;
	p=L->next;  //p指向第一个结点 
	j=1; //j为计数器 
	while(j<i && p)  //顺链域向后扫描,直到p指向第i个元素或p为空
	{
		p=p->nextt;
		j++;

	}
	if (!p || j>i)
		return 0;  //i值不合法i>n或者i<=0 
	e=p->data;  //取第i个结点的数据域,引用参数“带出来  ” 
	return 1;
}

按值查找

bool LocateElem_L(L
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值