ورود

View Full Version : پیاده سازی پشته جهت ذخیره داده های رشته ای



mehdi5106
دوشنبه 08 بهمن 1386, 12:44 عصر
با سلام خدمت همه
بچه ها من این برنامه رو نوشتم اما درست جواب نمیده و مشکل داره اگه میشه یکی برام اصلاحش کنه.
برنامه اصلی این هست که چند رشته رو می گیره و در پشته قرار میده.

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define SIZE 100
struct stack
{
int top;
char item[100][100];
};
struct stack *ps;
char k[10];
void push(struct stack *ps,char *s)
{
if(ps->top==SIZE-1)
{
printf("Stack Overflow");
exit(1);
}
for(int i=0;k[i];i++)
*ps->item[i][++(ps->top)]=s;
}
int empty(struct stack *ps)
{
if(ps->top==-1)
return 1;
else
return 0;
}
char pop(struct stack *ps)
{
if(empty(ps))
{
printf("Stack Underflow");
exit(1);
}
return *(ps->item[(ps->top)--]);
}
void main()
{
ps->top=-1;
clrscr();
char s[10];
gets(s);
push(ps,s);
printf("%c\n\n\n",pop(ps));
getch();
}

whitehat
دوشنبه 08 بهمن 1386, 13:50 عصر
char pop(struct stack *ps)
این متد یک کاراکتر را بر می گرداند! نه یک رشته
بهتره برای پرسیدن این سوالات پیغام خطایی را که دریافت می کنید در اینجا بنویسید
اگر خطا منطقی است بنویسید که چه مشکلی بوجود می آید

mehdi5106
دوشنبه 08 بهمن 1386, 14:42 عصر
من برنامه برای قرار دادن کاراکتر و اعداد در پشته رو تونستم بنویسم اما برای قرار دادن رشته در پشته مشکل دارم.

اگر ممکنه برام اصلاحش کنید.

whitehat
دوشنبه 08 بهمن 1386, 17:14 عصر
بهتره برای کار با متغیر های رشته ای از توابع آن در هدر string.h استفاده کنید.
در مورد تابع pop هم اگه قراره یک string به عنوان خروجی داشته باشه ، باید به صورت زیر تعریف بشه

char *pop(struct stcak *ps)