|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Bannato
Iscritto dal: Oct 2006
Messaggi: 170
|
[C] Palindorma con stak
Salve ho il seguente esercizio e l'ho implementato, ma non va. qualcuno mi da una mano?
grazie /*Una parola o una frase palindroma può essere letta indifferentemente da sinistra a destra o da destra a sinistra. Scrivere una funzione che controlli se una data stringa è palindroma utilizzando una pila.*/ Codice HTML:
#include<stdio.h> #include<stdlib.h> #define FULL 100 #define EMPTY 0 typedef char data; typedef enum {false, true} boolean; typedef struct elem{ data d; struct elem *next; }; typedef struct elem elem; typedef struct stack{ int cnt; elem *top; }; typedef struct stack stack; void inizializza(stack *stk); void push(data d,stack *stk); data pop(stack *stk); data top(stack *stk); boolean empty(const stack *stk); boolean full(const stack *stk); int palindroma(stack *stk,char *ptr); int main(void){ stack s; char str[]="anna"; if (palindroma(&s,&str)==1) printf("stringa %s palindroma\n",str); else printf("stringa %s non palindroma\n",str); system("PAUSE"); } void inizializza(stack *stk){ stk->cnt=0; stk->top=NULL; } void push(data d,stack *stk){ elem *p; p=malloc(sizeof(elem)); p->d=d; p->next=stk->top; stk->top=p; stk->cnt++; } data pop(stack *stk){ data d; elem *p; d=stk->top->d; p=stk->top; stk->top=stk->top->next; stk->cnt--; free(p); return d; } data top(stack *stk){ return (stk->top->d); } boolean empty(const stack *stk){ return ((boolean) (stk->cnt==EMPTY)); } boolean full(const stack *stk){ return ((boolean) (stk->cnt==FULL)); } int palindroma(stack *stk,char *ptr) { char c; int slen = strlen(ptr); int len = slen/2; while(len--) push(stk, *ptr++); /* se s è una stringa dispari, salta il carattere centrale */ if (slen % 2) ptr++; while(!empty(stk)) if (pop(stk) != *ptr++) return 0; return 1; } |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Mi piace molto l'approccio che stai usando per imparare, il tuo modo di scrivere il codice è molto ben strutturato, complimenti
![]() Hai mai usato un debugger ? Con quale ambiente di sviluppo stai scrivendo il codice ? |
![]() |
![]() |
![]() |
#3 |
Bannato
Iscritto dal: Oct 2006
Messaggi: 170
|
Per il debugger No, Uso il dev-C
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Allora è il momento buono per imparare...purtroppo ora come ora non posso provare con Dev-C++...qui comunque c'è qualcosa: http://www.di.uniba.it/~lops/program...ev-C++%205.htm
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:30.