Trang 1 / 2 12 LastLast
Hiển thị kết quả từ 1 đến 10 / 16

Chủ đề: [Q] Mí wuynh ui...

  1. #1
    Tham gia
    16-06-2003
    Location
    Xì Gòn
    Bài viết
    38
    Like
    0
    Thanked 0 Times in 0 Posts

    [Q] Mí wuynh ui...

    Mi' wuynh ơi, mấy hàm sau bị báo lỗi là "Function should return a value", có cách nào khắc phục lỗi này không,níu có thì chỉ đệ dzới (các hàm này chạy vẫn đúng), cảm ơn mí wuynh trước nhoa.

    //Ham hieu chinh node cho AVL_Tree
    AVLTREE_NODE *AdjustNode(AVLTREE_NODE *&pCurRoot)
    {
    AVLTREE_NODE *p;
    if (HeightOfNode(pCurRoot->pLeft)==HeightOfNode(pCurRoot->pRight)+2)
    {
    p=pCurRoot->pLeft;
    if (HeightOfNode(p->pLeft)==HeightOfNode(p->pRight))
    {
    pCurRoot->pLeft=p->pRight;
    p->pRight=pCurRoot;
    pCurRoot->nBal=-1;
    p->nBal=1;
    return p;
    }
    else if (HeightOfNode(p->pLeft)==HeightOfNode(p->pRight)+1)
    {
    pCurRoot->pLeft=p->pRight;
    p->pRight=pCurRoot;
    pCurRoot->nBal=0;
    p->nBal=0;
    return p;
    }
    else if (HeightOfNode(p->pLeft)==HeightOfNode(p->pRight)-1)
    {
    AVLTREE_NODE *p1;
    p1=p->pRight;
    p->pRight=p1->pLeft;
    pCurRoot->pLeft=p1->pRight;
    p1->pLeft=p;
    p1->pRight=pCurRoot;
    switch (p1->nBal)
    {
    case 0:
    {
    pCurRoot->nBal=0;
    p->nBal=0;
    }
    break;
    case 1:
    {
    pCurRoot->nBal=0;
    p->nBal=-1;
    }
    break;
    case -1:
    {
    pCurRoot->nBal=1;
    p->nBal=0;
    }
    break;
    }
    p1->nBal=0;
    return p1;
    }
    }
    else
    {
    p=pCurRoot->pRight;
    if (HeightOfNode(p->pRight)==HeightOfNode(p->pLeft))
    {
    pCurRoot->pRight=p->pLeft;
    p->pLeft=pCurRoot;
    pCurRoot->nBal=1;
    p->nBal=-1;
    return p;
    }
    else if (HeightOfNode(p->pRight)==HeightOfNode(p->pLeft)+1)
    {
    pCurRoot->pRight=p->pLeft;
    p->pLeft=pCurRoot;
    pCurRoot->nBal=0;
    p->nBal=0;
    return p;
    }
    else if (HeightOfNode(p->pRight)==HeightOfNode(p->pLeft)-1)
    {
    AVLTREE_NODE *p1;
    p1=p->pLeft;
    p->pLeft=p1->pRight;
    pCurRoot->pRight=p1->pLeft;
    p1->pRight=p;
    p1->pLeft=pCurRoot;
    switch (p1->nBal)
    {
    case 0:
    {
    pCurRoot->nBal=0;
    p->nBal=0;
    }
    break;
    case 1:
    {
    pCurRoot->nBal=-1;
    p->nBal=0;
    }
    break;
    case -1:
    {
    pCurRoot->nBal=0;
    p->nBal=1;
    }
    break;
    }
    p1->nBal=0;
    return p1;
    }
    }
    }

    //Ham them node cho AVL_Tree
    int AVLTreeAdd(AVLTREE_NODE *&pCurRoot,int nKey)
    {
    if (pCurRoot==NULL)
    {
    pCurRoot=new(AVLTREE_NODE);
    pCurRoot->pLeft=pCurRoot->pRight=NULL;
    pCurRoot->nKey=nKey;
    return 1;
    }
    else
    {
    if (pCurRoot->nKey==nKey) return 0;
    if (pCurRoot->nKey>nKey)
    AVLTreeAdd(pCurRoot->pLeft,nKey);
    if (pCurRoot->nKey<nKey)
    AVLTreeAdd(pCurRoot->pRight,nKey);
    }
    int nHL,nHR;
    nHL=HeightOfNode(pCurRoot->pLeft);
    nHR=HeightOfNode(pCurRoot->pRight);
    if (nHL==nHR) pCurRoot->nBal=0;
    else if (nHL==nHR+1) pCurRoot->nBal=-1;
    else if (nHL==nHR-1) pCurRoot->nBal=1;
    else pCurRoot=AdjustNode(pCurRoot);
    }

    //Ham tim node thay the cho node can xoa
    AVLTREE_NODE *SearchStandFor(AVLTREE_NODE *pCurRoot,AVLTREE_NODE *&pStandFor)
    {
    if (pStandFor->pRight!=NULL)
    SearchStandFor(pCurRoot,pStandFor->pRight);
    else
    {
    pCurRoot->nKey=pStandFor->nKey;
    AVLTREE_NODE *pTemp;
    pTemp=pStandFor;
    pStandFor=pStandFor->pLeft;
    return pTemp;
    }
    }

    //Ham xoa node co khoa la nKey trong AVL_Tree
    int AVLTreeDelete(AVLTREE_NODE *&pCurRoot,int nKey)
    {
    if (pCurRoot==NULL) return 0;
    if (pCurRoot->nKey>nKey)
    AVLTreeDelete(pCurRoot->pLeft,nKey);
    else if (pCurRoot->nKey<nKey)
    AVLTreeDelete(pCurRoot->pRight,nKey);
    else
    {
    AVLTREE_NODE *pTemp;
    pTemp=pCurRoot;
    if (pCurRoot->pLeft==NULL) pCurRoot=pCurRoot->pRight;
    else if (pCurRoot->pRight==NULL) pCurRoot=pCurRoot->pLeft;
    else pTemp=SearchStandFor(pCurRoot,pCurRoot->pLeft);
    delete pTemp;
    int nHL,nHR;
    nHL=HeightOfNode(pCurRoot->pLeft);
    nHR=HeightOfNode(pCurRoot->pRight);
    if (nHL==nHR) pCurRoot->nBal=0;
    else if (nHL==nHR+1) pCurRoot->nBal=-1;
    else if (nHL==nHR-1) pCurRoot->nBal=1;
    else pCurRoot=AdjustNode(pCurRoot);
    return 1;
    }
    }
    Quote Quote

  2. #2
    Tham gia
    16-06-2003
    Location
    Xì Gòn
    Bài viết
    38
    Like
    0
    Thanked 0 Times in 0 Posts
    Xin lỗi mí wuynh nha, khi copy rồi dán qua thì nó bị nhảy tùm lum dzị á

  3. #3
    Tham gia
    27-05-2003
    Location
    Tp.Hcm
    Bài viết
    33
    Like
    0
    Thanked 0 Times in 0 Posts
    NHÌN MÙ LUÔN

  4. #4
    Tham gia
    11-06-2003
    Location
    Ho Chi Minh
    Bài viết
    38
    Like
    0
    Thanked 1 Time in 1 Post
    Thì phải thêm làm shao cho nó trả về 1 giá trị là được rồi, ví dụ thiêm vào cuối câu lệnh 'return NULL' chắc là được

  5. #5
    Tham gia
    16-06-2003
    Location
    Xì Gòn
    Bài viết
    38
    Like
    0
    Thanked 0 Times in 0 Posts
    Chòi , hàm ngừ ta trả dzìa con trỏ mà wuynh bỉu trả dzìa NULL thì còn gì là hàm của tui

  6. #6
    Tham gia
    11-06-2003
    Location
    Ho Chi Minh
    Bài viết
    38
    Like
    0
    Thanked 1 Time in 1 Post
    Hổng phải vậy ... :-) Vì có thể trong hàm của bác có xét thiêm các điều kiện và chỉ trả về khi thoả các điều kiện này, khi đó compiler sẽ warning là "... not all paths return value ...", nếu bác setting những warning dạng này đều là Error hết (coi lại phần option setting) thì sẽ bị báo lỗi, do đó bác thêm đại 1 cái 'return NULL' ở cuối cho C++ nó 'lầm tưởng' là luôn luôn có trả về để nó câm họng lại ... Trừ phi có gì sai khác thì cách của tui là đúng rùi !

  7. #7
    Tham gia
    16-06-2003
    Location
    Xì Gòn
    Bài viết
    38
    Like
    0
    Thanked 0 Times in 0 Posts
    nhưng mà đây là hàm đệ quy mò, đâu có làm dzị được

  8. #8
    Tham gia
    11-06-2003
    Location
    Ho Chi Minh
    Bài viết
    38
    Like
    0
    Thanked 1 Time in 1 Post
    Ôi trời ơi .. em trả lời vậy mà bác chưa hài lòng sao ? :-) .. ý em là chỉ thêm vô vậy thôi chứ có làm gì đâu ! Nếu thật sự chương trình mà chạy đến câu lệnh đó thì rõ ràng bác đã viết sai đâu đó rồi (lỗi logic) ... bác thử đi xem nào, với lại lỗi nó báo ra sao thì post lên thì các bác khác mới giúp được chứ ! Mà bác xem lại thử chỗ gọi đệ qui có return chưa ? 'return <Recursive Function>'

  9. #9
    Tham gia
    12-02-2003
    Bài viết
    15
    Like
    0
    Thanked 0 Times in 0 Posts
    Bac de cai ham return lai gia tri la con tro la khong dung. Vi sau khi function ket thuc vung nhho chua con tro se bi xoa sach nen luc nay gia tri cua con tro la vo dinh.
    BAc nen them 1 cai new(*p) ( dynamic allocated memory) trong function roi hay tra gia tri con tro nay ve.

  10. #10
    Tham gia
    16-06-2003
    Location
    Xì Gòn
    Bài viết
    38
    Like
    0
    Thanked 0 Times in 0 Posts
    To Boy4is: xin lũi wuynh nhoa, đó chi 3 là warning thui, không phải là error, hàm của tui vẫn chạy đúng, tui chi 3 muốn khử cái waring đó thui.Dù seo thì cũng cảm ơn wuynh đã quan tâm giúp đỡ, thanks.
    To haison: vậy sao, nhưng mà mấy hàm tìm kiếm tui đâu cần phải new(*p) đâu .Okie, dù seo thì tui cũng dzìa thử coi.Thanks nha

Trang 1 / 2 12 LastLast

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •