30/09/2018, 23:56

Lỗi lập trình Stack trong C++!

#include<iostream>
using namespace std;
struct Node {
	int data;
	Node *next;
};
struct Stack {
	Node *top;
	int count;
};
void createStack(Stack *&s) {
	s->top = NULL;
}
bool isEmptyStack(Stack *s) {
	bool kq = s->top == NULL;
	return kq;
}
void Push(Stack *&s, int data) {
	Node *p = new Node;
	p->data = data;
	p->next = s->top;
	s->top = p;
	s->count++;
}
int main() {
	Stack *s = new Stack;
	Push(s, 5);
	Push(s, 7);
	Push(s, 9);
	while (s->top!= NULL) {
		cout << s->top->data; // em bị Break chỗ này nhưng chưa tại sao ạ ?
		s->top = s->top->next;
	}
}

Em bị các số khi thêm vào stack nhưng bị break , mong anh chị giúp em ! Em cảm ơn !

*grab popcorn* viết 02:00 ngày 01/10/2018

s->top lúc khởi tạo của bạn không bằng NULL và bị trỏ tới một địa chỉ nào đó.
Vậy nên ở vòng while nó ko dừng lại + bị lỗi do truy cập ô nhớ tào lao / không cho phép.

Muốn sửa thì chỉ cần s->top = NULL sau khi khởi tạo Stack.

Bài liên quan
0