#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#define LEN 21
typedef struct StaElement
{
char str[LEN];
struct StaElement * next;
}StaElem, *StaBottom;
typedef struct myStack
{
StaBottom top;
StaElem bottom;
int numbers;
}MyStack;
void stackini(MyStack *mstcks)
{
mstcks->numbers=0;
mstcks->bottom.str[0] = '\0';
mstcks->bottom.str[LEN-1] = '\0';
mstcks->bottom.next = NULL;
mstcks->top=&mstcks->bottom;
}
void stackpush(MyStack *mstcks,char *elem)
{
mstcks->top->next=(StaBottom)malloc(sizeof(StaElem));
mstcks->top = mstcks->top->next;
strncpy(mstcks->top->str,elem,LEN-1);
mstcks->numbers++;
}
void stackpop(MyStack *mstcks,char *elem)
{
StaBottom p = &mstcks->bottom;
strcpy(elem,mstcks->top->str);
while(p != mstcks->top)
{
p=p->next;
}
free(mstcks->top);
mstcks->top = p;
mstcks->top->next = NULL;
mstcks->numbers++;
}
int main()
{
MyStack mstck;
stackini(&mstck);
char str1[LEN]="Hello!",str2[LEN]="Hi!";
printf("str1:%s\nstr2:%s\n",str1,str2);
stackpush(&mstck,str1);
stackpop(&mstck,str2);
printf("str1:%s\nstr2:%s\n",str1,str2);
return 0;
}
温馨提示:答案为网友推荐,仅供参考