zoukankan      html  css  js  c++  java
  • 算法导论10.2习题

    #include<iostream>
    using namespace std;

    //单向循环链表
    class SList
    {
    public:
    struct Node
    {
    Node(){}
    Node(int val)
    :_val(val){}
    int _val;
    Node * _next;
    };
    public:
    SList()
    {
    _head = new Node(0);
    _head->_next = _head;
    }
    void Insert(int val)
    {
    Node * node = new Node(val);
    node->_next = _head->_next;
    _head->_next = node;
    }

    void Delete(Node * nod)
    {
    Node *tmp = nod->_next;
    nod->_next = tmp->_next;
    if(tmp == _head)
    {
    _head = nod;
    }
    else
    {
    nod->_val = tmp->_val;
    }
    delete tmp;
    }

    void Push(int val)
    {
    Node * nod = new Node(val);
    nod->_next = _head->_next;
    _head->_next = nod;
    }

    Node * Pop()
    {
    if(_head->_next== _head)
    return NULL;
    Node *tmp = _head->_next;
    _head->_next = tmp->_next;
    return tmp;
    }

    void Enqueue(int val)
    {
    Node *nod = new Node();
    nod->_next = _head->_next;
    _head->_next = nod;
    _head->_val = val;
    _head = nod;
    }

    Node * Dequeue()
    {
    if(_head->_next == _head)
    return NULL;
    Node *tmp = _head->_next;
    _head->_next = tmp->_next;
    return tmp;
    }
    private:
    Node * _head;
    };

    1. 动态集合上的操作insert能否用一个单链表在O(1)时间内实现?对delete操作呢?

      可以在O(1)的时间内实现insert操作

          可以在O(1)的时间复杂度内实现delete操作.

    2.用一个单链表L实现一个栈,要求Push和Pop操作的时间复杂度为O(1)

       如上代码

    3.用一个单链表L实现一个栈,要求Enqueue和Dequeue的时间复杂度为O(1)

  • 相关阅读:
    Selenium 项目搭建过程
    Selenium Javascript 滚动条操作
    Selenium KPI接口 时间等待
    Selenium KPI接口 附件上传
    Selenium KPI接口 警告弹 -alert/confirm/promp
    Selenium KPI接口 窗口句柄
    Selenium KPI接口 iframe切换
    Selenium KPI接口 屏幕截图
    Linux文件权限管理
    Linux中的各种文件类型
  • 原文地址:https://www.cnblogs.com/SammyLan/p/2203563.html
Copyright © 2011-2022 走看看