zoukankan      html  css  js  c++  java
  • 链栈操作

    //链栈操作(带头节点)
    #include <stdio.h>
    #include <malloc.h>
    
    typedef struct LinkStack{
    	int data;
    	struct LinkStack* next;
    }Stack,*LStack;
    
    Stack * InitStack(LStack *);	//初始化
    void Push(LStack , int); 	//入栈 
    void Pop(LStack);		//出栈 
    void output(LStack); 	//遍历 
    
    int main(void){
    	LStack S;
    	InitStack(&S);
    	if(S->next == NULL){
    		printf("初始化成功!
    ");
    	}else{
    		printf("初始化失败!
    ");
    	}
    	Push(S,1);
    	Push(S,2);
    	Push(S,3);
    	Push(S,4);
    	Push(S,5);
    	
    	printf("当前链栈中的数据是:");
    	output(S);
    	printf("
    "); 
    	
    	Pop(S);
    	Pop(S);
    	Pop(S);
    	printf("当前链栈中的数据是:");
    	output(S);
    	
    	return 0;
    } 
    
    //初始化 
    Stack * InitStack(LStack *S){
    	(*S) = (Stack *)malloc(sizeof(Stack));
    	(*S)->next = NULL;
    	return (*S);
    }
    
    //入栈
    void Push(LStack S , int e){
    	Stack *p = (Stack *)malloc(sizeof(Stack));
    	p->data = e;
    	p->next = S->next;
    	S->next = p;
    } 
    
    //出栈 
    void Pop(LStack S){
    	Stack *p = S->next;
    	int e;
    	if(S->next != NULL){
    		e = p->data;
    		printf("当前弹出数据是:%d
    ",e);
    		S->next = p->next;
    		printf("当前栈顶数据是:%d
    ",S->next->data); 
    		free(p);
    	}else{
    		printf("栈为空!
    ");
    	}
    }
    
    //遍历 
    void output(LStack S){
    	Stack *p = S->next;
    	if(p == NULL){
    		printf("栈为空!"); 
    	}else{
    		while(p != NULL){
    			printf("%d ",p->data);
    			p = p->next;
    		}
    	}
    }
    
  • 相关阅读:
    一个好的技术管理人员需要知道的几件事
    团队必经的五个阶段以及好团队的七个特征
    作为CTO如何做技术升级
    技术领导画像
    TF-IDF原理
    KNN和K-Means的区别
    图数据库入门
    Hbase和Hive的异同
    谈谈机器学习面试
    关于领导力的理解
  • 原文地址:https://www.cnblogs.com/Timesi/p/12448091.html
Copyright © 2011-2022 走看看