Hiểu rõ về Stack-Queue

Mọi người giúp em
Em có struct 1 cái stack và 1 cái queue.Nếu dưới hàm main của em mà khai báo struct stack thì chương trình chạy bị lỗi, cụ thể là lỗi tại hàm pushqueue .
Nhưng nếu không khai báo stack ở hàm main thì chương trình chạy rất bình thường, không lỗi.
Việc tạo 1 cái cấu trúc stack và khai báo nó tại hàm main có ảnh hưởng gì tới Queue mà chương trình chạy bị sai ạ.
Mong mọi người giúp đỡ

#include<iostream>
using namespace std;


struct node
{
	char data;
	node* pnext;	
};

struct queue
{
	node*ptop;
};

struct stack
{
	node*phead;
};

void PushQueue(queue &calculator, node* p)
{
	if (calculator.ptop == NULL)
	{
		calculator.ptop = p;
	}
	else
	{
		for (node*k = calculator.ptop; k != NULL; k = k->pnext)
		{
			if (k->pnext == NULL)
			{
				k->pnext = p;
				break;
			}
		}
	}
}
node* khoitaonode(char x)
{
	node*p = new node;
	if (p == NULL)
	{
		cout << "khoi tao node khong thanh cong";
		return NULL;
	}
	p->data = x;
	p->pnext = NULL;
	return p;
}



int main()
{
	//stack m;
	queue x;
	cout<<"nhap n ";
	int n;
	cin>>n;
	for(int i=0;i<n;i++)
	{
		char tam;
		cout<<"nhap tam ";cin>>tam;
		node*p=khoitaonode(tam);
		PushQueue(x,p);
	}
	for(node*m=x.ptop;m!=NULL;m=m->pnext)
	{
		cout<<m->data;
	}
	return 0;
}

là sao ạ, em không rõ lắm

À đây rồi

chỗ này truy cập thành phần chưa khởi tạo nên sẽ toạch.

Khi chưa khởi tạo nó có thể bằng bất cứ địa chỉ nào chứ ko phải NULL (C++11 thay bằng nullptr).

3 Likes

Ồ, trước giờ cứ tưởng khởi tạo không cho giá trị sẽ là NULL
thank you

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?