1. 程式人生 > 實用技巧 >考研相關的單鏈表題目

考研相關的單鏈表題目

//將一個沒有頭結點的結點資料為字元的單鏈表,分解成還有字母字元、數字字元和其他字元的三個帶頭節點的迴圈連結串列
void OneToThree(LinkedList l,LinkedList la,LinkedList ld,LinkedList lo)
{
	while(l != nullptr)
	{
		LinkedList r = l;
		l = l->next;
		if(r->val >= 'a' && r->val <= 'z' || r->val >= 'A' && r->val <= 'Z')
		{
			r->next = la->next;
			la->next = r;
		}
		else if(r->val >= 0 && r->val <= 9)
		{
			r->next = ld->next;
			ld->next = r;
		}else
		{
			r->next = lo->next;
			lo->next = r;
		}
	}
} 


//不帶頭結點的刪除有序連結串列中元素相同的結點
//如 1 2 2 3 返回 1 2 3
LinkedList  DelSame_None(LinkedList head)
{
    LinkedList  pre = head;
    LinkedList  p = pre->next;
    while(p != nullptr)
    {
        if(p->val == pre->val)
        {
            LinkedList  tmp = p;
            p = p->next;
            free(tmp);
        }
        else {
            pre->next = p;
            pre = p;
            p = p->next;
        }
    }
    pre->next = p;
}



//帶頭結點的刪除有序連結串列中元素相同的結點
LinkedList  DelSame(LinkedList la)
{
    LinkedList  pre = la->next;
    LinkedList  p = pre->next;
    while(p != nullptr)
    {
        if(p->val == pre->val)
        {
            LinkedList  tmp = p;
            p = p->next;
            free(tmp);
        }
        else {
            pre->next = p;
            pre = p;
            p = p->next;
        }
    }
    pre->next = p;
}