Từ 1 tới 8 trên tổng số 8 kết quả

Đề tài: bị close program khi chạy hàm xóa tất cả node trong cây

  1. #1
    Ngày gia nhập
    03 2012
    Bài viết
    4

    Mặc định bị close program khi chạy hàm xóa tất cả node trong cây

    mình code vào rùi !! nhưng khi chạy lị bị close program
    code ở sau đây fix lỗi giùm mình thanks
    Code:
    //Huy Toan Bo Cay
    void RemoveTree(PTRTREE &TREE)
    {
    		RemoveTree(TREE->pLeft);
    		RemoveTree(TREE->pRight);
    		delete(TREE);	
    }
    ///// code hàm main
    case 8:
    			cout<<"Xoa Toan Bo Node"<<endl;
    			RemoveTree(TREE);
    			break;
    Đã được chỉnh sửa lần cuối bởi truongtanphu : 20-03-2012 lúc 03:15 PM.

  2. #2
    Ngày gia nhập
    08 2011
    Bài viết
    117

    Trích dẫn Nguyên bản được gửi bởi truongtanphu Xem bài viết
    mình code vào rùi !! nhưng khi chạy lị bị close program
    code ở sau đây fix lỗi giùm mình thanks
    Code:
    //Huy Toan Bo Cay
    void RemoveTree(PTRTREE &TREE)
    {
    		RemoveTree(TREE->pLeft);
    		RemoveTree(TREE->pRight);
    		delete(TREE);	
    }
    ///// code hàm main
    case 8:
    			cout<<"Xoa Toan Bo Node"<<endl;
    			RemoveTree(TREE);
    			break;
    Không có điều kiện dừng thế này thì nó sẽ delete những gì ? hiểu ra vấn đề chưa ?

  3. #3
    Ngày gia nhập
    03 2012
    Bài viết
    4

    thanks bạn dù mình cho điều kiện vào nó vẫn close nên mình cho cuối dòng của nó TREE=NULL;
    Chạy Ổn Cả Rồi
    Thanks nhìu^^!

  4. #4
    Ngày gia nhập
    10 2011
    Bài viết
    552

    Sao lại cho vào cuối dòng là TREE=NULL ?

    Phải là thế này chứ ?
    C++ Code:
    1. void RemoveTree(PTRTREE &TREE)
    2. {
    3.        if(TREE!=NULL) // Tree !null thì mới làm, = null thì thôi làm mần chi
    4.        {
    5.              RemoveTree(TREE->pLeft);
    6.              RemoveTree(TREE->pRight);
    7.              delete(TREE); 
    8.        }
    9. }
    Um Mani Padme Hum...!!

  5. #5
    Ngày gia nhập
    08 2011
    Bài viết
    117

    Trích dẫn Nguyên bản được gửi bởi truongtanphu Xem bài viết
    thanks bạn dù mình cho điều kiện vào nó vẫn close nên mình cho cuối dòng của nó TREE=NULL;
    Chạy Ổn Cả Rồi
    Thanks nhìu^^!
    tớ không tin. post full code của bạn lên đây coi ?

  6. #6
    Ngày gia nhập
    03 2012
    Bài viết
    4

    Mặc định bị close program khi chạy hàm xóa tất cả node trong cây

    hehe tớ sẽ gửi lên lúc không có null mà tớ nhập phần tử mới là bị close program liền
    Code:
    #include<iostream.h>
    #include <stdio.h>
    #include <conio.h>
    #include <stdlib.h>
    typedef struct tagTNODE
    {
    	int Key;
    	struct tagTNODE *pLeft,*pRight;
    }TNODE;
    typedef TNODE *PTRTREE;
    PTRTREE TREE;
    TNODE *Newnode (int x) 
    {	
    	TNODE *p;
    	p=new tagTNODE; 	
    	if (p==NULL) 
    	{
    		cout<<"Khong du bo nho";  return NULL;
    	}
    	p->Key=x; 	 
    	p->pRight=NULL;
    	p->pLeft=NULL;
    	return p; 
    }
    void InitList(PTRTREE TREE)
    {
    	TREE=NULL;
    }
    void Insert_node(PTRTREE &TREE,int x)
    {
    	if (TREE == NULL)
    	{
    		TREE=Newnode(x);
    		TREE->Key = x;
    		TREE->pLeft=TREE->pRight= NULL;
    	}
    	else if (x == TREE->Key)
    	{
    		cout<<"gia tri bi trung";
    	}
    	else if (x < TREE->Key)
    		Insert_node(TREE->pLeft,x);
    	else Insert_node(TREE->pRight,x);
    
    }
    //Duyet cay NLR
    void NLR(PTRTREE TREE)
    {
    	if (TREE!=NULL)
    	{
    		
    		cout<<TREE->Key<<"\t";
    		NLR(TREE->pLeft);
    		NLR(TREE->pRight);
    	}
    }
    //Duyet cay LRN
    void LRN(PTRTREE TREE)
    {
    	if (TREE!=NULL)
    	{
    		LRN(TREE->pLeft);
    		LRN(TREE->pRight);
    		cout<<TREE->Key<<"\t";
    	}
    }
    //Duyet cay RNL
    void RNL(PTRTREE TREE)
    {
    	if (TREE!=NULL)
    	{
    		RNL(TREE->pRight);
    		cout<<TREE->Key<<"\t";
    		RNL(TREE->pLeft);
    	}
    }
    //Duyet cay LNR
    void LNR(PTRTREE TREE)
    {
    	if (TREE!=NULL)
    	{
    		LNR(TREE->pLeft);
    		cout<<TREE->Key<<"\t";
    		LNR(TREE->pRight);
    	}
    }
    //Search
    PTRTREE Search(PTRTREE TREE, int x)
    {
    	PTRTREE p;
    	p = TREE;
    	while (p !=NULL)
    	{
    		if (x == p->Key)
    		{
    			cout<<"Tim Thay "<<x<<" Trong Cay Nhi Phan"<<endl;
    			cout<<p->Key;
    			return (p);
    		}
    		else
    		if (x < p->Key)
    		p=p->pLeft;
    		else
    		p=p->pRight;
    	}
    	cout<<"Khong Tim Thay "<<x<<" Trong Cay Nhi Phan"<<endl;
    	return (NULL);
    }
    //Tim node the mang
    void SearchStandFor(PTRTREE &r, PTRTREE &q)
    {
    	if (r->pRight) SearchStandFor(r->pRight,q);
    	else
    	{
    		q->Key = r->Key;
    		q = r;
    		r = r->pLeft;
    	}
    }
    //Xoa Node Trong Cay
    void Remove_node(PTRTREE &TREE, int x)
    {
    	PTRTREE p;
    	if(TREE == NULL)
    	cout<<"Node p khong co"<<endl;
    	else
    	{
    		if (x < TREE->Key) Remove_node(TREE->pLeft,x);
    		else
    		if (x > TREE->Key) Remove_node(TREE->pRight,x);
    		else
    		{
    			p = TREE;
    			if(p->pRight == NULL)
    			TREE = p->pLeft;
    			else
    			if (p->pLeft == NULL)
    			TREE = p->pRight;
    			else
    			if (TREE->pLeft != NULL)
    			SearchStandFor(TREE->pLeft,p);
    			else
    			SearchStandFor(TREE->pRight,p);
    			delete p;
    		}
    	}
    }
    //Huy Toan Bo Cay
    void RemoveTree(PTRTREE &TREE)
    {
    	if (TREE!=NULL)
    	{
    		RemoveTree(TREE->pLeft);
    		RemoveTree(TREE->pRight);
    		delete(TREE);
    		TREE=NULL;
    	}	
    }
    void main()
    {
    	int n, i, x,chon,k;
    	do
    	{
    		cout<<"1:Them Node Vao Cay"<<endl;
    		cout<<"2:Duyet Cay Theo Node Left Right"<<endl;
    		cout<<"3:Duyet Cay Theo Left Right Node"<<endl;
    		cout<<"4:Duyet Cay Theo Right Node Left"<<endl;
    		cout<<"5:Duyet Cay Theo Left Node Right"<<endl;
    		cout<<"6:Tim Kiem Node"<<endl;
    		cout<<"7:Xoa Node Nhap Tu Phim"<<endl;
    		cout<<"8:Xoa Toan Bo Cay"<<endl;
    		cin>>chon;
    			switch (chon)
    			{
    			case 1:
    			cout<<"nhap So Lan Can Nhap"<<endl;
    			cin>>k;
    			for(int i=1;i<=k;i++)
    			{
    				cout<<"Gia tri cua node:";
    				cin>>x;
    				Insert_node(TREE,x);
    			}
    			break;
    			
    			case 2:
    			cout<<"Duyet Cay Theo Node Left Right: "<<endl;
    			NLR(TREE);
    			cout<<endl;
    			break;
    			
    			
    			case 3:
    			cout<<"Duyet Cay Theo Left Right Node :"<<endl;
    			LRN(TREE);
    			cout<<endl;
    			break;
    			
    			
    			case 4:
    			cout<<"Duyet Cay Theo Right Node Left "<<endl;
    			RNL(TREE);
    			cout<<endl;
    			break;
    		
    			case 5:
    			cout<<"Duyet Cay Theo Left Node Right :"<<endl;
    			LNR(TREE);
    			cout<<endl;
    			break;
    		
    			case 6:
    			cout<<"Tim Kiem Node";
    			cout<<"\nNhap gia tri can tim:";
    			cin>>x;
    			Search(TREE,x);
    			break;
    			
    			case 7:
    			cout<<"Xoa Node Nhap Tu Ban Phim"<<endl;
    			cout<<"\nNhap gia tri can xoa:";
    			cin>>x;
    			Remove_node(TREE,x);
    			break;
    			
    			case 8:
    			cout<<"Xoa Toan Bo Node"<<endl;
    			RemoveTree(TREE);
    			break;
    		
    		}
    	}while (chon!=0);
    }

  7. #7
    Ngày gia nhập
    08 2011
    Bài viết
    117

    Trích dẫn Nguyên bản được gửi bởi truongtanphu Xem bài viết
    thanks bạn dù mình cho điều kiện vào nó vẫn close nên mình cho cuối dòng của nó TREE=NULL;
    Chạy Ổn Cả Rồi
    Thanks nhìu^^!
    Có điều kiện thế kia thì không die là đúng rồi tưởng chỉ thêm mỗi cái dòng cuối.


    như @clchicken là được rồi. có cái dòng cuối hay không cũng không khác nhau tí nào.

  8. #8
    Ngày gia nhập
    03 2012
    Bài viết
    4

    ủa ! mình bỏ cái dòng cuối đi cũng bị close à bởi zị mình mới bỏ cái dòng null vào^^! vì mình với nhập môn về phần danh sách , cũng như cây ^^!

Các đề tài tương tự

  1. Cấu trúc dữ liệu Cách xóa một Node bất kỳ trong danh sách liên kết đơn?
    Gửi bởi A10932 trong diễn đàn Thắc mắc CTDL & Giải thuật
    Trả lời: 4
    Bài viết cuối: 17-01-2013, 11:44 PM
  2. Xóa các node có cùng độ sâu trong cây BST như thế nào ?
    Gửi bởi philaden22 trong diễn đàn Thắc mắc CTDL & Giải thuật
    Trả lời: 5
    Bài viết cuối: 09-12-2012, 09:30 PM
  3. Lỗi windows can check for a solution and close the program
    Gửi bởi trancaodung trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 15-05-2012, 11:36 AM
  4. Graphic Xóa nút close trong windown from
    Gửi bởi assassinit91 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 13-12-2011, 11:54 PM
  5. Xóa Node trong treeview
    Gửi bởi dangwru trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 26-06-2010, 11:30 PM

Quyền hạn của bạn

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