【题目】试写一算法,在带头结点单链表的第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。 */
- {
- LNode *q,*p;
- p=q=L;
- if(i<=0)
- {Li=NULL;return ERROR;}
- for(int length=0;length<i;length++)
- {
- q=p;
- p=p->next;
- if(!p)
- {
- Li=NULL;
- return ERROR;
- }
- }//for end
- Li=(LinkList)malloc(sizeof(LNode));
- Li->next=p;
- q->next=NULL;
- return OK;
- }