1. 程式人生 > >資料結構之連結串列案例四

資料結構之連結串列案例四

【題目】試寫一演算法,在帶頭結點單鏈表的第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. }