数据结构之链表案例四

本文介绍了一种在带头结点单链表中,从指定位置开始分割链表的算法。该算法能将从第i个元素开始的所有元素移除原链表并形成新的带头结点的链表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【题目】试写一算法,在带头结点单链表的第i元素起的所有元素从链表移除,并构成一个带头结点的新链表。

带头结点单链表的类型定义为:

typedef struct LNode {

  ElemType      data;

  struct LNode *next;

} LNode, *LinkList;

**********/

Status Split_L(LinkList L, LinkList &Li, int i)

/* 在带头结点单链表L的第i元素起的所有元素 */

/* 移除,并构成带头结点链表Li,返回OK。   */

/* 若参数不合理,则Li为NULL,返回ERROR。  */

  1. {
  2.      LNode *q,*p;
  3.      p=q=L;
  4.      if(i<=0)
  5.      {Li=NULL;return ERROR;}
  6.      for(int length=0;length<i;length++)
  7.      {
  8.        q=p;
  9.        p=p->next;
  10.        if(!p)
  11.        {
  12.          Li=NULL;
  13.          return ERROR;
  14.        }      
  15.      }//for end
  16.      Li=(LinkList)malloc(sizeof(LNode));
  17.      Li->next=p;
  18.      q->next=NULL;
  19.      return OK;
  20.     
  21. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值