mapcao91 Thành viên mới
Tổng số bài gửi : 12 Join date : 28/02/2011
| Tiêu đề: cau truc du lieu Tue Mar 29, 2011 7:24 pm | |
| các bạn ơi, sửa bài này giúp mình với. - Code:
-
#include<iostream.h> #include<stdio.h> #include<conio.h> #include<string.h> #define MAX 100 using namespace std; typedef char ElementType ; typedef struct{ ElementType Element[MAX]; int Top; }Stack; /*khoi tao ngan xep */ void MakeNull_Stack(Stack *S) { (*S).Top=MAX; } //kiem tra ngan xep rong ElementType Empty_Stack(Stack S) { return S.Top==MAX; } //kiem tra nga xep day ElementType Full_Stack(Stack S) { return S.Top==0; }
//them mot phan tu vao ngan xep void Push(ElementType X,Stack *S) { if(Full_Stack(*S)) printf("\nError :Ngan xep day"); else { (*S).Top=(*S).Top-1; (*S).Element[(*S).Top]=X; } } //tra ve phan tu dau ngan xep ElementType Top(Stack S) { if(Empty_Stack(S)) printf("\nError :Ngan xep rong"); else { return S.Element[S.Top]; } }
//xoa mot phan tu khoi ngan xep void Pop(Stack *S) { if(Empty_Stack(*S)) printf("\nError : Ngan xep rong"); else { (*S).Top=(*S).Top+1; } } //in //void Print_Stack(Stack S) //{ // for(int i=S.Top;i<MAX;i++) // printf("%d ",S.Element[i]); //}
//void doi_sang_hau_to(char *,char *); //int uu_tien(char); //int laso(char); int laso(char kitu){ return (kitu>='0'&&kitu<='9'); } int uu_tien(char toan_tu){ switch(toan_tu){ case '*':case '/':{return 2; break;} case '+':case '-':{return 1; break;} case'(':{return 0; break;} } } void doi_sang_hau_to(char *Element,char* kq){ char i; int j,k=0; Stack S; MakeNull_Stack(S); while(Element[j]){ if(laso(Element[j])){ kq[k]=Element[j]; k++; } else if(laso(Element[j])==0&&Element[j]!=')') if(uu_tien (S.Element[S.Top])>= uu_tien(Element[j])&&uu_tien(Element[j])!=0){ Pop(S,i); kq[k]=i; k++; Push(S,Element[j]); } else Push(S,Element[j]); if(Element[j]==')') { while(S.Element[S.Top]!='(') { Pop(S,i); kq[k]=i; k++; } Pop(S,i); } j++; } while(!Empty_Stack(S)) { Pop(S,i); kq[k]=i; k++; } kq[k]='\0'; }
int main(){ ElementType Element[MAX]; ElementType kq[MAX]; cout<<"nhap bieu thuc:"; cin.getline(Element,MAX); doi_sang_hau_to(Element,kq); cout<<"\nbieu thuc hau to:"<<kq<<endl; return 0; getch(); }
[Admin] Các bạn nên đưa code vào cặp thẻ |code| |/code| để code hiện đúng định dạng. Thêm 1 lưu ý nữa, các bạn nên đặt tên bài viết và yêu cầu trong bài viết rõ ràng 1 chút để người xem dễ biết đường mà giúp các bạn. Nếu bạn cứ để như vậy thì người khác sẽ không biết bạn bị sai chổ nào mà giúp.
| |
|
ddtan90 Admin
Tổng số bài gửi : 178 Join date : 30/12/2010 Age : 33 Đến từ : SE 3 - K34
| Tiêu đề: Re: cau truc du lieu Tue Mar 29, 2011 9:39 pm | |
| Bài của bạn về giải thuật thì mình chưa có thời gian coi, nhưng nhìn sơ qua thì mình thấy nhiều lỗi cú pháp lắm, ví dụ 1 vài chổ nhe: 1. lúc khai báo MakeNull_Stack thì bạn cho tham số là (*S) nhưng khi gọi hàm này bạn lại gọi chỉ có MakeNull_Stack(S); (dòng 86). Các hàm Pop(*S), Push(X,*S) cũng vậy. Các hàm này khi gọi tơid nó thì bạn phải gọi MakeNull_Stack(&S);, Pop(&S), .... 2. Hàm Pop và hàm Push có vấn đề - Bạn khai báo Pop (*S), nhưng khi bạn gọi nó thì bạn lại gọi Pop(S,i). - Bạn khai báo Push (X,*S) , nhưng khi bạn gọi nó thì bạn lại gọi Push (S,X).
Hi vọng vài góp ý này giúp được bạn! Thân! | |
|
mapcao91 Thành viên mới
Tổng số bài gửi : 12 Join date : 28/02/2011
| Tiêu đề: Re: cau truc du lieu Tue Mar 29, 2011 10:30 pm | |
| hi.t da sua dc code ui.cam on ban nhieu nhe
| |
|
Sponsored content
| Tiêu đề: Re: cau truc du lieu | |
| |
|