数据结构之链表案例四

【题目】试写一算法,在带头结点单链表的第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. }

猜你喜欢

转载自blog.csdn.net/iamnotgril/article/details/82814058
今日推荐