01/10/2018, 09:02

Thắc mắc về stack và con trỏ trong c++!

#include <iostream> 
using namespace std;
typedef char tmp;
struct Node{      
	tmp data;
	Node *next;
};
struct stack{ 
Node * Top;
};
stack s;
void init(stack &s){
	s.Top=NULL;
}
int isempty(stack s){
	return (s.Top==NULL);
}
Node * creatNode(tmp x){
	Node *p=new Node;
	p->data=x;
	p->next=NULL;
     return p;
}
void push(stack &s,Node *p){ 
	if(s.Top==NULL)
		s.Top=p;
	else
	p->next=s.Top;
	p=s.Top;
}
void input(stack &s){
	init(s);
	Node *p;
	char num[] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};    
    int coSo, so, du;  
    cout << "Nhap so can chuyen: ";
    cin >> so;
    cout << "Nhap co so can chuyen: ";
    cin >> coSo;
    while(so) {             
        du = so % coSo;
		p=creatNode(num[du]); 
		push(s,p);// khi e thực hiện debug thì con s.top ở hàm push chi nhan gia trị dâu tiên mn giải thích hộ e chỗ này
        so /= coSo;
    }
}
void output(stack s){
	Node *p=s.Top;
	while(p!=NULL){
		cout << p->data;
		p=p->next;
	}
}
void free(stack s){
	Node *p;
	while(s.Top!=NULL){
		p=s.Top;
		s.Top->next=s.Top;
		delete p;
	}
}
int main()
{
	stack s;
	init(s);
	input(s);
	output(s);
	//free(s);    
	system("pause");
}
Hoàng Trung viết 11:13 ngày 01/10/2018

Lần sau nếu bạn đăng bài nên nêu rõ yêu cầu của bài và câu hỏi rõ ràng là bạn muốn hỏi gì, nếu không người ta sẽ rất nhác xem hết code của bạn rồi sửa cho bạn. Mình góp ý thế còn câu hỏi của bạn mình có câu trả lời thế này, hàm push của bạn có vấn đề. Sau khi thêm vào thì ta gán top về ở p chứ không phải gán p về cho con trỏ Top :))

Bài liên quan
0