30/09/2018, 21:29

Lỗi tạo hàm duyệt node trong danh sách liên kết c++

đầu tiên đây ko phải là bt mà chỉ là vd làm cho hiểu, mình chạy vẫn dc, nhưng tham số truyền vào thì phải là head thì cái hàm tim_node nó mới duyệt dc, các node còn lại duyệt ko ra , ae cho ý kiến, ko cần sửa code, chỉ cần nói lỗi sai logic là dc.
code :

#include<iostream>
using namespace std;
class node{
public:
	int key_;
	node * next_;
};
node * create_node(int x){
	node * n;
	n = new node;
	n->key_ = x;
	n->next_ = NULL;
	return n;
}
node *tim_node_cuoi(node*head){
	node *p = head;
	if (p == NULL) return p;
	while (p->next_ != NULL){
		p = p->next_;
	}
	return p;
}
void add_last(node * &head, node *n){
		if (head == NULL){
			head = n;
			return;
		}
		node *p = tim_node_cuoi(head);
		p->next_ = n;
	}


void add_fist(node* & head, node * n){
	if (head == NULL){
		head = n;
		return;
	}
	n->next_ = head;
	head = n;
}
void output(node * head){
	node *p = head;
	while (p != NULL){
		cout << p->key_ << endl;
		p = p->next_;
	}
}
node *tim_node(node * head, int x){
	node *p = head;
	
	
	while (p->key_!=NULL)
	{
		if (p->key_ == x){
			return p  ;
			p = p->next_;
		}
				return NULL;
		}
		}
		
		
	

int main(){
	node* head = NULL;
	node *n1 = create_node(1);
	node *n2 = create_node(2);
	node *n3 = create_node(3);
	node *n4 = create_node(4);

	add_last(head, n1);
	add_last(head, n2);
	add_last(head, n3);
	add_fist(head, n4);
	node * n5 = tim_node(head,3);
	if (n5 != NULL){
		cout << n5->key_<<endl;
	}
	else{
		cout << "ko tim thay "<<endl;
	}
	output(head);
	system("pause");
	return 1;
}
Tien Tran viết 23:34 ngày 30/09/2018

có ai biết ko
cho mình cái thuật toán (khác cái hàm tim_kiem) cũng dc

Tien Tran viết 23:35 ngày 30/09/2018

xin lỗi đã làm phiền mọi người, mình đã tìm ra nguyên nhân

Bài liên quan
0