单链表初始化、查找、插入、删除、创建

(1)初始化

//单链表的整表删除
 //声明p和q;第一个结点赋值给p,下一个结点赋值给q;循环执行释放p和将q赋值给p的操作
  status Clearlist(Linklist *L)
  {
  	Linklist p,q;//定义结构体指针
	  p=(*L)->next; //第一个结点 ?
	  while(p)
	  {
	  	q=p->next;
	  	free(p);
	  	p=q;
	   } 
	   (*L)->next=NULL;
	   return ok;
   } 

(2)查找

//单链表查找
status Getelem(Linklist L,int i,Elemtype &e)
{
p=L->next;
j=1;
while(p&&j>i)
{
	p=p-next;
	++j;
	}	
	if(!p||j>i)
	{
		printf("error");
	}
	e=p->data;
	return ok;
 } 

(3)按值查找

//单链表按值查找
LNode *Locataelem(Linklist L,Elemtype e)
{
	p=L->next;
	while(p&&p->data!=e)
	{
		p=p->next;
	}
	return p;//返回地址 
 } 

(4)插入

//单链表的插入
status Listinsert(Linklist &L,int i,Elemtype e)
{
	p=L;
	j=0;
	while(p&&j<i-1)//查找第i-1个结点
	{
		p=p->next;
		++j; 
	 } 
	 if(!P||j>i-1)
	 {
	 	printf("error");
	 }
	 s=new LNode;//生成新的结点
	 s->data=e;
	 s->next=p->next;
	 p->next=s;
	 return ok; 
	
 } 

(5)删除

//单链表的删除
status Listdelete(Linklist &L,int i)
{
	p=L;
	j=0;
	while(p->next)&&(j<i-1)
	{
		p=p->next;
		++j;
	}
	if(!(p->next)||(j>i-1))
	printf("error");
	q=p->next;
	p->next=q->next;
	return ok;
 } 

(6)前插法创建单链表

//前插法创建单链表
void Creatlist(Linklist &L,int n)
{
	L=new LNode;
	L->next=NULL;//创建带有头结点的空链表 
	for(i=0;i<n;i++)
	{
		p=new LNode;//生成新结点
		cin>>p->data;
		p->next=L->next;
		L->next=p;//将新结点插入到头结点之后 
		
	 } 
 } 

(7)后插法创建

//后插法创建单链表
void Creatlist(Linklist &L,int n) 
{
	L=new LNode;
	L->next=NULL;
	r=L;//尾指针r指向头结点
	for(i=0;i<n;i++)
	{
		p=new LNode;
		cin>>p->data;
		p->next=NULL;
		r->next=p;
		r=p;//r指向新的尾结点p 
	 } 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值