21:25:42 30/01/2013
Đề bài:
1. Sử dụng cấu trúc stack để đảo xâu kí tự ?2. Sử dụng cấu trúc Stack để chuyển một số thập phân xang dạng nhị phân ?
3. Sử dụng cấu trúc Stack để chuyển một biểu thức trung tố xang hậu tố ?
Đoạn code hướng dẫn:
/*Nhap vao chuoi ki tu tu ban phim, in ra chuoi da duoc dao nguoc*/
#include
#include
#include
#include
struct node{
char item;
struct node *next;
};
typedef struct node *stacknode;
typedef struct {
stacknode top;
}stack;
void Khoitaostack(stack *s){
s->top=NULL;
return;
}
int Kiemtrarong(stack s){
return (s.top==NULL);
}
void Push(stack*s,char c){
stacknode p;
p = (stacknode) malloc (sizeof(struct node));
p->item=c;
p->next=s->top;
s->top=p;
return;
}
char Pop(stack *s){
stacknode p;
p=s->top;
s->top=s->top->next;
return p->item;
}
void main(void){
char *st;
int i;
stack *s;
clrscr();
Khoitaostack(s);//khoi tao stack
printf("Nhap vao xau ky tu:");
gets(st);//nhap chuoi
for(i=0;i
printf("Xau da dao nguoc la:\n");
while (!Kiemtrarong(*s))
printf("%c",Pop(s));//in cac ki tu trong stack
getch();
}
2.
/*Nhap vao mot so thap phan,in ra dang nhi phan cua so do*/
#include
#include
#include
#include
3.
#include
#include
#include
#include
struct node{
char item;
struct node *next;
};
typedef struct node *stacknode;
typedef struct {
stacknode top;
}stack;
void Khoitaostack(stack *s){
s->top=NULL;
return;
}
int Kiemtrarong(stack s){
return (s.top==NULL);
}
void Push(stack*s,char c){
stacknode p;
p = (stacknode) malloc (sizeof(struct node));
p->item=c;
p->next=s->top;
s->top=p;
return;
}
char Pop(stack *s){
stacknode p;
p=s->top;
s->top=s->top->next;
return p->item;
}
void main(void){
char *st;//coi bieu thuc nhu la mot chuoi
int i;
stack *s;
clrscr();
Khoitaostack(s);//khoi tao stack
printf("Nhap vao bieu thuc:");
gets(st);//nhap bieu thuc
printf("\nChuoi da nhap sau khi dao nguoc la:\n");
for(i=0;i
if(st[i]=='(');//bo qua khi gap '('
else if(st[i]=='+'||st[i]=='-'||st[i]=='*'||st[i]=='/')
Push(s,st[i]);//nap toan tu vao stack
else if(st[i]==')')
printf("%c",Pop(s));//dua ra toan tu trong stack khi gap ')'
else
printf("%c",st[i]);//dua bieu thuc moi ra khi gap toan hang
}
while (!Kiemtrarong(*s))//in so luong cac toan tu con lai neu con
printf("%c",Pop(s));
getch();
}
Chỉnh sửa bởi: Lương Đức Môn
0 nhận xét:
Đăng nhận xét