zoukankan      html  css  js  c++  java
  • 堆栈——链表实现

    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <ctime> 
    
    using namespace std;
    
    using ElemType = int;
    
    // 堆栈结构
    class Node {
    public:
    	ElemType data;
    	Node *next; 
    };
    
    // 初始化栈 
    Node* initStack(Node *head, int n)
    {
    	srand(time(NULL));
    	head->data=rand()%100 - 1;		// 栈底元素 
    	while (n--) {
    		Node *q = (Node*)malloc(sizeof(Node));
    		q->data = rand()%100 - 1;
    		q->next = head;
    		head = q;
    	}
    	return head;
    }
    
    // 压栈 
    Node* push(Node *head, ElemType val)
    {
    	Node *q = (Node*)malloc(sizeof(Node));
    	q->data = val;
    	q->next = head;
    	head = q;
    	return head;
    }
    
    // 出栈 
    Node* pop(Node *head)
    {
    	Node *p = head;
    	if (head->next == NULL) {
    		free(p);
    		return head;
    	}
    	head = head->next;
    	free(p);
    	return head;
    }
    
    void print(Node *head)
    {
    	Node *p = head;
    	cout << "从栈顶到栈底的元素依次为:";
    	while(p->next != NULL) {
    		cout << p->data << " ";
    		p = p->next;
    	}
    	cout << endl;
    }
    
    int main()
    {
    	Node *head = (Node*)malloc(sizeof(Node));		// 头指针指向栈顶 
    	head->next = NULL;
    	head = initStack(head, 10);
    	print(head);
    	head = push(head, 20);
    	print(head);
    	head = pop(head);
    	print(head);
    }
    

      

  • 相关阅读:
    mysql case when用法
    php+mysql实现事务回滚
    go安装windows源码
    【C++】子类访问父类typedef的问题
    【C++】STL算法之remove_if
    MySQL常用函数总结
    Apriori算法+python实现
    数据库索引理论
    Linux基本命令
    JAVA 多线程
  • 原文地址:https://www.cnblogs.com/xzxl/p/8643252.html
Copyright © 2011-2022 走看看