Ejemplo n.º 1
0
void CPPList::remove(ListNode *current){
    if (current!= 0) {
        if (current == ListHeader) {
            ListHeader = current->next;
        }
        else{
            findPreNode(current)->next = current->next;
        }
        delete current;
        _size--;
    }
}
Ejemplo n.º 2
0
void CPPList::insert(ListNode *current, int number){
    if (!is_empty()){                               //do not insert if the list is empty
        ListNode *tmp = new ListNode;
        tmp->data() = number;
        if (current == ListHeader) {
            tmp->next = current;
            ListHeader = tmp;
        }
        else {
            tmp->next = current;
            findPreNode(current)->next = tmp;
        }
         _size++;
    }
   
}
Ejemplo n.º 3
0
//删除号码
BOOL delCallNumber(Tree *pTree, NodeType *callNum, int len)
{
	int i;
	int delIndex = 0;
	TreeNode *ptempNode;

	TreeNode *delList[CALL_NUM_LENGHT];
	BOOL hasBorther[CALL_NUM_LENGHT];
	memset(delList, 0, sizeof(delList));
	memset(hasBorther, 0, sizeof(hasBorther));

	if (pTree == NULL || callNum == NULL)
		return FALSE;

	delList[0] = pTree->root;
	if (delList[0] == NULL)
		return FALSE;
	if (delList[0]->val != callNum[0])
		return FALSE;

	for (i=1; i<CALL_NUM_LENGHT; i++)
	{
		ptempNode = findChildNode(delList[i-1], callNum[i]);
		if (ptempNode == NULL)
		{
			printf("\ncall number not exist.\n");
			return FALSE;
		}

		hasBorther[i] = delList[i-1]->child->brother != NULL ? TRUE : FALSE;
		delList[i] = ptempNode;
	}

	delIndex = getDelIndex(hasBorther, sizeof(hasBorther)/sizeof(hasBorther[0]));
	if (delIndex != -2)
	{	
		if (delIndex == -1)
		{
			pTree->root = NULL;
			ptempNode = delList[0];
		}
		else
		{
			//有兄弟节点
			ptempNode = findPreNode(delList[delIndex], delList[delIndex+1]);
			if (ptempNode == NULL)
				return FALSE;

			if (ptempNode == delList[delIndex]) //左
				delList[delIndex]->child = delList[delIndex+1]->brother;
			else
				ptempNode->brother = delList[delIndex+1]->brother;

			ptempNode = delList[delIndex+1];
		}

		while (ptempNode)
		{
			ptempNode = delChildNode(ptempNode);
		}
	}
	else
	{
		return FALSE;
	}


	return TRUE;
}