问题标题: 酷町堂:关于链表

0
0
已解决
王子健
王子健
初级天翼
初级天翼

关于链表的一些题目包括在STL中,可是我们在学STL的时候没有讲到

今天刷了一些链表的题目,发现有些题目可以用数组+栈 完成,也有些题目直接用数组或队列或栈就可以完成了

所以想向大佬问一些关于链表的问题:
 

1、链表的题目都可以用栈实现吗?(例如删除指定元素等)

2、链表有什么头文件或者定义吗?

3、单独用链表怎么用?


0
已采纳
邓涵睿
邓涵睿
中级天翼
中级天翼

1,可以,这是链表的栈实现方法代码

#ifndef _STACK  
#define _STACK  
#include <iostream>  
//节点类  
template <class T>  
class Node  
{  
    public:  
        T data;  
        Node <T> * next;  

};  
//栈的类声明,基于链表实现  
template <class T>  
class Stack  
{  
    public:  
        Stack();  
        ~Stack();  
        T pop();//出栈  
        void push(const T&);//入栈  
        bool isEmpty();//判断栈是不是空  
    private:  
        Node<T> * top; //栈顶指针   
};  
//构造函数,建立空栈  
template <class T>  
Stack<T>::Stack()  
{  
    top = NULL;  
}  
//析构函数  
template <class T>  
Stack<T>::~Stack()  
{  
    //释放申请的内存  
    if(top)  
    {  
        Node <T> *p;  
        p = top;  
        top = top->next;  
        delete p;  
    }  
}  
//判断栈是不是空  
template <class T>  
bool Stack<T>::isEmpty()  
{  
    if(top)  
        return false;  
    return true;  
}  
//出栈  
template <class T>  
T Stack<T>::pop()  
{  
    if(top)  
    {  
        T tmp = top->data;  
        Node<T> * p = top;  
        top = top->next;  
        delete p;  
        return tmp;  
    }  
}  
//入栈  
template <class T>  
void Stack<T>::push(const T & a)  
{  
    //申请内存,存储新入栈节点  
    Node<T> * p = new Node <T>;  

    p->next = top;  
    p->data = a;  
    top = p;  
}  

网址:https://blog.csdn.net/weishiang/article/details/8198911

2,C的话,标准的stdio.h和stdlib.h就可以了C++用#include<iostream>以及命名空间usingnamespacestd;就差不多了不记得要特别用什么头文件啊,除非你用系统的结构体....

3,是主函数内吗?师傅?

0
我要回答