Singly linked list application examples

void split(LinkNode*& L, LinkNode*& L1, LinkNode*& L2)
{
	LinkNode* p, * q, * r;
	p = L->next;

	L1 = L;      
	r = L1;

	L2 = (LinkNode*)malloc(sizeof(ElemType));
	L2->next = NULL;

	while (p != NULL)
	{
		r->next = p;
		r = p;
		
		p = p->next;
		q = NULL;
		if (p != NULL)
		{
			q = p->next;
			p->next = L2->next;
			L2->next = p;
		}
 	}
	r->next = NULL;
}

  Delete single largest element in the list L nodes

void delmaxnode(LinkNode*& L)
{
    LinkNode* p, * pre, * max_p, * max_pre;
    pre = L;
    p = L->next;
    max_pre = pre;
    max_p = p;
    while (p != NULL)
    {
        if (p->data > max_p->data)
        {
            max_p = p;
            max_pre = pre;
        }
        pre = pre->next;
        p = p->next;

    }
    max_pre->next = max_p->next;
    free(max_p);
}

 

Single chain L = a1, b1, a2, b2, a3, b3, split into L = a1, a2, a3, L2 = b3, b2, b1

 

Guess you like

Origin www.cnblogs.com/KIROsola/p/11280303.html