bo2-6.cpp 具有实用意义的线性链表(存储结构由c2-5.h定义)的24个基本操作

该博客详细介绍了如何使用C++实现线性链表的24个基本操作,包括节点的创建、释放、初始化、清除、销毁、插入、删除、附加、定位、遍历等,这些操作对于理解和操作链表至关重要。
摘要由CSDN通过智能技术生成
 
  1.  // bo2-6.cpp 具有实用意义的线性链表(存储结构由c2-5.h定义)的24个基本操作
  2.  void MakeNode(Link &p,ElemType e)
  3.  { // 分配由p指向的值为e的结点。若分配失败,则退出
  4.    p=(Link)malloc(sizeof(LNode));
  5.    if(!p)
  6.      exit(ERROR);
  7.    p->data=e;
  8.  }
  9.  void FreeNode(Link &p)
  10.  { // 释放p所指结点
  11.    free(p);
  12.    p=NULL;
  13.  }
  14.  void InitList(LinkList &L)
  15.  { // 构造一个空的线性链表L
  16.    Link p;
  17.    p=(Link)malloc(sizeof(LNode)); // 生成头结点
  18.    if(p)
  19.    {
  20.      p->next=NULL;
  21.      L.head=L.tail=p;
  22.      L.len=0;
  23.    }
  24.    else
  25.      exit(ERROR);
  26.  }
  27.  void ClearList(LinkList &L)
  28.  { // 将线性链表L重置为空表,并释放原链表的结点空间
  29.    Link p,q;
  30.    if(L.head!=L.tail) // 不是空表
  31.    {
  32.      p=q=L.head->next;
  33.      L.head->next=NULL;
  34.      while(p!=L.tail)
  35.      {
  36.        p=q->next;
  37.        free(q);
  38.        q=p;
  39.      }
  40.      free(q);
  41.      L.tail=L.head;
  42.      L.len=0;
  43.    }
  44.  }
  45.  void DestroyList(LinkList &L)
  46.  { // 销毁线性链表L,L不再存在
  47.    ClearList(L); // 清空链表
  48.    FreeNode(L.head);
  49.    L.tail=NULL;
  50.    L.len=0;
  51.  }
  52.  void InsFirst(LinkList &L,Link h,Link s) // 形参增加L,因为需修改L
  53.  { // h指向L的一个结点,把h当做头结点,将s所指结点插
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值