30/09/2018, 16:51

lỗi trong stack

Mình bị lỗi chỗ hàm intialize_stack

#include<iostream>
#include<stdlib.h>

using namespace std;

struct nhan_vien{
char ten[100];
int tuoi;
char que[100];
};
struct node{
    nhan_vien x;
    struct node * next;
};
typedef struct {
    node top;
}stack;
 void intialize_stack(stack *s){
     s->top=NULL;
 }
 int stack_empty(stack *s){
     
     return(s==NULL);
 }
 nhan_vien nhap(nhan_vien y){
     cout<<"nhap vao ten nhan vien:"<<endl;
     cin.ignore();
     cin.getline(y.ten,100);
     cout<<"nhap vao tuoi nhan vien:"<<endl;
     cin>>y.tuoi;
     cout<<"nha vao que quan nhan vien:"<<endl;
     cin.ignore();
     cin.getline(y.que,100);
     return y;
 }
 node *input(nhan_vien y){
     node *p;
     p=new node;
     p->x=y;
     p->next=NULL;
     return p;
 }
 void push(stach *s, nhan_vien y){
     node *p;
     p=input(y);
     p->next=s->top;
     s->top=p;
     return;
 }
 nhan_vien pop(stack *s){
     node *p;
     if(stack_empty(s)){
         cout<<"hang doi rong"<<endl;
         return 0;
     }
     else{
         p=s->top;
         s->top=s->top->next;
         return p->x;
     }
 }
 void show_stack(stack *s){
    if(stack_empty(s)){
         cout<<"hang doi rong"<<endl;
         return ;
     }
     else{
         pop(s);
         while(pop(s)){
             cout<<"ten:"<<pop(s).ten<<endl;
             cout<<"tuoi:"<<pop(s).tuoi<<endl;
             cout<<"que:"<<pop(s).que<<endl;
         }
     }
 }
 void chuong_trinh(){
     stack *s;
     intialize_stack(s);
     nhan_vien y,x;
     nhap(y);
     push(s,y);
     nhap(x);
     push(s,x);
     show_stack(s);    
     
 }
 main(){
     chuong_trinh();
     
 }
Tuấn Nguyễn viết 18:56 ngày 30/09/2018
#include<iostream>
#include<stdlib.h>

using namespace std;

struct nhan_vien{
char ten[100];
int tuoi;
char que[100];
};
struct node{
    nhan_vien x;
    struct node * next;
};
typedef struct {
    node* top;
}stack;
 void intialize_stack(stack *s){
	 s->top = NULL;
 }
 int stack_empty(stack *s)
 {
     return(s==NULL);
 }
 nhan_vien nhap(nhan_vien &y)
 {
     cout<<"nhap vao ten nhan vien:"<<endl;
     fflush(stdin);
     cin.getline(y.ten,100);
     cout<<"nhap vao tuoi nhan vien:"<<endl;
     cin>>y.tuoi;
     cout<<"nha vao que quan nhan vien:"<<endl;
     cin.ignore();
     cin.getline(y.que,100);
     return y;
 }
 node *input(nhan_vien y)
 {
     node *p;
     p=new node;
     p->x=y;
     p->next=NULL;
     return p;
 }
 void push(stack *s, nhan_vien y)
 {
     node *p;
     p=input(y);
     p->next=s->top;
     s->top=p;
     return;
 }
void pop(stack *s){
     node *p;
     if(stack_empty(s))
	 {
         cout<<"hang doi rong"<<endl;
		 return;
     }
     else{
         p=s->top;
         s->top=s->top->next;
         return;
     }
 }
void Output(nhan_vien x)
{
	cout<<"Ten : "<<x.ten<<endl;
	cout<<"Tuoi : "<<x.tuoi<<endl;
	cout<<"Que : "<<x.que<<endl;
}
 void show_stack(stack *s){
    if(stack_empty(s))
	{
         cout<<"hang doi rong"<<endl;
         return ;
     }
     else{
		 for(node *p = s->top; p != NULL; p = p->next)
		 {
			 Output(p->x);
		 }
     }
 }
 void chuong_trinh(){
	 stack *s = new stack;
     intialize_stack(s);
     nhan_vien y,x;
     nhap(y);
     push(s,y);
     nhap(x);
     push(s,x);
     show_stack(s);    
     
 }
 int main(){
     chuong_trinh();
     cin.get();
 }
Khai Nguyen Dinh viết 18:55 ngày 30/09/2018

có thể chỉ rõ lỗi cho mình không?

Tuấn Nguyễn viết 18:53 ngày 30/09/2018

Bạn sai hàm Pop và show_stack ở hàm main bạn phải cấp phát stack *s = new stack;

Bài liên quan
0