zoukankan      html  css  js  c++  java
  • 数据结构栈的链表实现

    /*
    	1.节点初始化
    	2.创建栈
    	3.检测栈是否为空
    	4.进栈
    	5.出栈
    	6.返回栈顶元素 
    	7.打印栈 
    */
    
    #include <stdio.h>
    #include <malloc.h>
    
    typedef struct stack
    {
    	int element;
    	struct stack *next;
    }
    *Stack;
    
    Stack createStack(void)
    {
    	Stack S=malloc(sizeof(struct stack));
    	if(S==NULL)
    	{
    		printf("Out of space
    ");
    		return NULL;
    	}
    	else
    	{
    		S->next=NULL;
    		return S;
    	}
    }
    
    int isEmpty(Stack S)
    {
    	return (S->next==NULL);
    }
    
    void push(Stack S,int element)
    {
    	Stack Sptr=malloc(sizeof(struct stack));
    	if(Sptr==NULL)
    	{
    		printf("Out of space
    ");
    	}
    	else
    	{
    		Sptr->element=element;
    		Sptr->next=S->next;
    		S->next=Sptr;
    	}
    }
    
    void pop(Stack S)
    {
    	Stack Stmp=NULL;
    	if(isEmpty(S))
    	{
    		printf("Stack empty
    ");	
    	}	
    	else
    	{
    		Stmp=S->next;
    		S->next=S->next->next;
    		free(Stmp);		
    	}
    }
    
    int top(Stack S)
    {
    	if(isEmpty(S))
    	{
    		printf("Stack empty
    ");
    	} 
    	else
    	{
    		return (S->next->element);
    	} 
    }
    
    void printStack(Stack S) 
    {
    	Stack Sptr=S->next;
    	while(Sptr!=NULL)
    	{
    		printf("-------------
    ");
    		printf("|     %d    |
    ",Sptr->element);
    		printf("-------------
    ");
    		Sptr=Sptr->next;
    	}
    }
    
    int main(void)
    {
    	int i=1;
    	Stack S=createStack();
    	for(i=1;i<7;i++)
    	{
    		push(S,i);
    		//createStack();
    	}			
    	printStack(S); 
    }
    
    
    
    
     
    

    运行结果:

  • 相关阅读:
    斜率优化dp学习
    拓扑排序
    P2486 [SDOI2011]染色 区间合并+树链剖分(加深对线段树的理解)
    网络流24题!!!!
    费用流板子
    网络流dinic板子
    小花梨的数组
    C. 小花梨判连通
    splay树
    hdu4467 graph
  • 原文地址:https://www.cnblogs.com/achao123456/p/7119513.html
Copyright © 2011-2022 走看看