流浪者~MIT
2002-11-16, 11:42 AM
使用堆疊,題目為依序輸入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;
}
}
}
贊助商連結
我寫ㄉ程式大約如下,但是我輸入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;
}
}
}
贊助商連結