2018-05-26链栈的实现

#include 
#include 
#include 
#define OK 1

typedef struct StackNode{   
    char data[20];
    struct StackNode *next;
}StackNode,*Linkstack;



StackNode * InitStack()//初始化 
    {   StackNode *L; 
        L=(StackNode *)malloc(sizeof(StackNode));
        L->next=NULL;
        return L; 
    } 

StackNode * Push(StackNode *L,char *e)//入栈 
    {
        StackNode *p;
        p=(StackNode *)malloc(sizeof(StackNode));
        strcpy(p->data,e); 
        printf("现在里面有%s\n",p->data);
        p->next=L;
        L=p;                //对L进行了操作,所以返回L
        return L;
    }

int Length(StackNode *L)//栈长 
    {   int i=0;
        while(L->next!=NULL)
        {
            i++;
            L=L->next;
        }
        
        return i;   
    }


void GetALL(StackNode *L)  //输出栈内元素 
{       while(L->next!=NULL)
        {printf("%s",L->data);
        L=L->next; } 
}  
 
 
 
 
 
 
StackNode * GetTop(StackNode *L)  //栈顶 
{  
        if (!L)  return NULL;  
        else    return L;  
}  

int main(int argc, char *argv[]) {  
    
    
    
    
    StackNode LN;
    StackNode *L;
    L=&LN;
    int n;
    char a[20];
    
    printf("请输入你想进行的操作。\n");
    printf("1.初始化链栈。\n");
    printf("2.添加元素。\n");
    printf("3.输出栈顶。\n");
    printf("4.输出栈内元素个数。\n");
    printf("5.输出栈内元素。\n");
    while(1)
    
    {
    scanf("%d",&n);
    switch(n)
    {
        case 1:{
            L=InitStack();
            printf("初始化成功。\n");
            break;
        }   
        
        case 2:{
            printf("请输入你要添加的元素。\n");    
            scanf("%s",a);
            L = Push(L,a);
            printf("添加成功。\n");
            break;
        }
        
        case 3:{
            Linkstack p;
            p = GetTop(L);
            printf("%s",p->data); 
            break;
        }
              
        case 4:{
            printf("输出栈内元素个数为%d",Length(L));
            break;
        }
          
        case 5:{
        
            GetALL(L);

            
            
            break;
        }
        
        
    }
    }
    
    
    return 0;
}


你可能感兴趣的:(2018-05-26链栈的实现)