//1.初始化:(有头结点的情况下) S=(LStack*)malloc(sizeof(LStack));//为栈开辟内存空间 S.next=NULL;//把栈置为空 //2.入栈 p=(LStack*)malloc(sizeof(Lstack));//给入栈的元素分配内存空间 p->data=e;//把元素e插入栈内 p->next=S->next;//使得e成为了栈顶元素 S->next=p;//把移动指针放到栈顶元素的前面 //3.出栈:删除栈顶元素,并用e返回其值 if(S->next==NULL)//如果头结点为空 return OVERFLOW//下溢 else p=S->next; e=p->data;//找到栈顶元素,然后赋给e,并返回 S->next=p->next;//头结点指针向下移动 free(p);//把出栈的那个元素释放掉 //4.判断栈是否为空 if(S->next==NULL) return TURE; //由于栈是一种特殊的线性表。所以其他的操作和线性表的链式操作差不多。 //请参考我的博客关于线性表的链式操作。
原文地址:http://blog.csdn.net/u012989536/article/details/43310437