#include <stdio.h>
#include <stdlib.h>
typedef struct mylinkstack{
char mych;
struct mylinkstack *next;
} myls;
myls *mypush(myls *myls2,char ch)
{
myls *line = (myls*)malloc(sizeof(myls));
line->mych = ch;
line->next = myls2;
myls2 = line;
return myls2;
}
void myshow(myls *myls3){
myls *temp = myls3;
while(temp){
printf("%c\n",temp->mych);
temp = temp->next;
}
}
myls * mypop(myls * myls3){
if(myls3){
myls *p=myls3;
printf("未被赋值前:%c\n",myls3->mych);
myls3 = myls3->next;//此处把链节点的下一个内容全部赋值给myls3
printf("出栈元素:%c\t",p->mych);
if(myls3)
{
printf("栈顶元素:%c\n",myls3->mych);
}else{
printf("栈已空");
}
free(p);
}else{
printf("栈内没有元素");
}
return myls3;
}
int main(){
myls *myls1 = NULL;
int i;
for(i=0;i<10;i++){
myls1 = mypush(myls1,'A'+i);
}
printf("已成功插入10个元素");
myshow(myls1);
for(i=0;i<3;i++){
myls1 = mypop(myls1);
}
printf("删除3个元素后");
myshow(myls1);
}
PS:栈------先进后出