单链表的基本操作与实现

单链表的初试化(构造一个空表)

     算法:①生成新结点做结头,用头指针L指向新结点。

                ②将头结点的指针域置空。

     算法描述:

Status InitList(LinkList &L){    //LinkList 指向的是有数据和指针两个变量的结点
  L=new LNode; //或 L=(Linklist)malloc(sizeof(LNode));   从内存中找到这样的空间赋值给L
  L->next=NULL;
  return Ok;
 }

      补充算法:判断链表是否为空

int ListEmpty(LinkList L){
    if(L-> next)
      return 0;
    else 
      return 1;
}

单链表的销毁:

      算法思路:从头指针开始,依次释放所有结点

Status DestoryList_L(LinkList &L){   //销毁单链表L
   Lnode *p;    // 或LinkList p;
   while(L){
   p=L;
   L=L->next;
   delete p;
}

单链表的清空 

     算法:链表存在,但是链表中没有元素,成为空链表(头指针和头结点仍然存在)。释放所有结点,并将头结点指针域设置为空

     

Status ClearList(LinkList &L){   //将L重置为空表
  Lnode *p,*q;      //或LinkList p,q;
  p=L-> next;      //从首元结点开始,P最初指向头结点的下一个结点,即首元结点
  while(p){
     q=p->next;    //q用来指向p的下一个结点
     delete p;
     p=q;
  }
  L->next=NULL;    //头结点的指针域为空
     return OK;
}

    求单链表的的表长

       算法:从首元结点开始,依次计数所有结点

  

int ListLength_L(LinkList L){  
   LinkList p;   /定义指针变量P
   p=L-> next;      //p指针指向头结点
   i=0;
   while(p){
     i++;         ///遍历单链表,统计结点数
     p=p-> next;
}
 

知识回顾

①LNode 同类型的结点,指向结点的指针用LNode定义

② *LinkList 指向该结点的指针

取值:取单链表中第i个元素

   算法:

//LinkList L表示从表L中获取,ElemType &e : 表示将获取的元素通过e返回
Status GetElem_L(LinkList L, int i, ElemType &e){ 
 P=L->next;  //指针指向首元结点
 j=1;  //初试化
 while( p && j<i){   //当前指针变量存在,且j没有超过L中元素
  p=p-> next;
  ++j;
}
  if( !p || j<i) return ERROR;// 指针为空,第i个元素不存在
   e=p->data;
   return OK;
} 
  

 查找:根据指定数据获取该数据所在的地址

算法:

   

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值