會員 ![]() | 關於堆疊 使用堆疊,題目為依序輸入name,age,salary最多為五筆超過顯示stack full,沒有資料顯示empty 我寫ㄉ程式大約如下,但是我輸入name取出時都會顯示亂碼,有人可以幫我改改程式ㄇ??~~謝謝 #include <stdio.h> #include <conio.h> #include <stdlib.h> #define max_size 5 char mystack[max_size]; int mytop=-1; struct person { char name[20]; int age; float salary; }; struct person x; void add(int *top,char value) { if (*top>=max_size-1) { printf("stack full"); return; } mystack[++*top]=value; } char delete1(int *tt) { if(*tt==-1) { printf("stack empty"); return 0; } return mystack[(*tt)--]; } void main() { char sel; char item; char ch; clrscr(); for(; ![]() printf("\n(a)add (b)delete (c)quit"); sel=getche(); switch (sel) { case ''a'': printf("\ninput name:"); gets(&x.name); add(&mytop,x.name); break; case ''b'': ch=delete1(&mytop); printf("\noutput data is:%s\n",ch); break; case ''c'': exit(0); break; } } } |
回覆 |
進階會員 | 試試看這樣.. 可以符合你想做到的功能. but~ stack 不是這樣動作的, 打從一開始你的程式流程就不對了~ 語法: #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string.h> #define max_size 5 char *mystack[max_size]; int mytop=-1; struct person { char name[20]; int age; float salary; }; struct person x; void add(int *top,char *value) { if (*top>=max_size-1) { printf("\nstack full"); return; } (*top)++; mystack[*top] = new char[strlen(value)+1]; strcpy(mystack[*top], value); } char* delete1(int *tt) { if(*tt==-1) { printf("\nstack empty"); return 0; } printf("\noutput data is:%s\n", mystack[*tt]); delete [] mystack[*tt]; return mystack[(*tt)--]; } void main() { char sel; char item; clrscr(); for( ; ; ) { printf("\n(a)add (b)delete (c)quit:"); sel=getche(); switch (sel) { case 'a': printf("\ninput name:"); gets(x.name); add(&mytop,x.name); break; case 'b': delete1(&mytop); break; case 'c': exit(0); break; } } } |
回覆 |
會員 ![]() | 引用:
不過我還要同時輸入年紀跟薪水 請問該如何加進去ㄋ?? | |
回覆 |
會員 ![]() | 謝謝你 不過我還要同時輸入年紀跟薪水 請問該如何加進去ㄋ?? |
回覆 |
|
XML | RSS 2.0 | RSS |
本論壇所有文章僅代表留言者個人意見,並不代表本站之立場,討論區以「即時留言」方式運作,故無法完全監察所有即時留言,若您發現文章可能有異議,請 email :[email protected] 處理。