試試看這樣.. 可以符合你想做到的功能.
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;
}
}
}
書籤