单链表的基本操作

单链表的基本操作

一:通常的定义
	typedef struct{
	char a[8];
	int score;
	} ElemType;
	typedef struct Lnode
	{
		ElemType data;
		struct Lnode *next;
	 } Lnode,*Linklist;
二:基本操作
1 判断链表是否非空
	int ListEmpty (Linklist L)
	{
		if(L->next)//非空 
		return 0;
		else return 1;
	 }
2 销毁单链表
	 Ststus DestroyList (Linklist &L) 
	 {
	 	Lnode *p;
	 	while(L){
	 		p=L;
	 		L=L->next;
	 		delete p;
		 }
	 }
3 清空单链表
	  Ststus ClearList (Linklist &L)
	  {
	  	Lnode *p,*q;
	  	p=p->next;
	  	while(p){
	  		q=p->next;
	  		delete p;
	  		p=q;
		  }
		  L->next=NULL;
		  return OK;
	   }
4 求链表的表长
	  int ListLength_L(Linklist L)
	  {
	  	Linklist p;
	  	p=L->next;
	  	int i=0;
	  	while(p)
	  	{
	  		i++;
	  		p=p->next;
		  }
		  return i;
	  	
		}  
5 获取某个元素的内容 通过变量e返回值
	  Status GetElem_L(Linklist L,int i,Elemtype &e)
	  {
	  	Linklist p;
	  	p=L->next;j=1;
	  	while(p&&j<i)
	  	{
	  		p=p->next;
	  		j++;
		  }
		  if(!p||j>i) return ERROR;
		  e=p->data;
		  return OK;
	   }
6 按值查找 
		 int LocateElem_L(Linklist L,Elemtype e){
		 	Linklist p;
		 	int j=1;
		 	p=L->next;
		 	while(p&&p->data!=e)
		 	{
		 		p=p->next;
		 		j++;
			 }
			 if(p) return j;
			 else return 0;
		 }
7 插入操作(在第i个元素前插入数据元素e) 
		 Status ListInsert_L(Linklist &L,int i,Elemtype e)
		 {
		 	Linklist p=L,s;
		 	int j=0;
		 	while(p&&j<i-1){
		 		p=p->next;
		 		j++;
			 }
			 if(!p||j>i-1) return ERROR;
			 s=new Lnode;//c++语法也可以用c语言s=(Linklist)malloc(sizeof(Lnode)) 
			 s->data=e;
			 s->next=p->next;
			 p->next=s;
		 }
8 删除第i个元素
		 Status ListDelete_L(Linklist &L,int i,ElemType &e) 
		 {
		 	Linklist p=L,q;
		 	int j=0;
		 	while(p->next&&j<i-1) 
		 	{
		 		p=p->next;
		 		j++;
			 }
			 if(!(p->next)||j>i-1) return ERROR;
			 q=p->next;
			 p->next=q->next;
			 e=q->data;
			 delete q;
			 return OK;
		  }
9 单链表的建立
1>头插法(如输入12345 ,所建立的链表 54321void Createlist_H(Linklist &L,int n)
		   {
		   	Linklist p;
		   	L=new Lnode;
		   	int n,t;
		   	L->next=NULL;
		   	while(n--)
		   	{
		   		p=new Lnode;
		   		scanf("%d",&t);
		   		p->data=t;
		   		p->next=L->next;
		   		L->next=p;
			   }
		   }
2>尾插法 如输入12345 ,所建立的链表 12345,要用到尾指针)
		   void Createlist_H(Linklist &L,int n)
		   {
		   	Linklist R;
		   	L=new Lnode;
		   	L->next=NULL;
		   	R=L;
		   	while(n--){
		   		int t;
		   		scanf("%d",&t);
		   		Linklist p;
		   		p=new Lnode;
		   		p->data=t;
		   		p->next=NULL;
		   		R->next=p;
		   		R=p;
			   }
		   }
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

向丞哥学习。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值