欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数据结构:实验四栈和队列的基本操作实现及其应用

程序员文章站 2024-01-24 17:29:52
...

一、实验目的

1,熟练掌栈和队列的结构特点,掌握栈和队列的顺序存储和链式存储结构和实现。
2,学会使用栈和队列解决实际问题。

二、实验内容

1,自己确定结点的具体数据类型和问题规模:
分别建立一个顺序栈和链栈,实现栈的压栈和出栈操作。
分别建立一个顺序队列和链队列,实现队列的入队和出队操作。
2,设计算法并写出代码,实现一个十将二进制转换成2进制数。“

三.实验报告
1.实验代码如下:

#include<iostream>
using namespace std;

template < typename T >
struct Node
{
    T data;
    Node<T> *next;
};

template < typename T >
class LinkStack {
public:
    LinkStack(T array[], int n)
    {
        top = NULL;
        Node<T> *node = NULL;
        for (int i = 0; i < n; i++) {
            node = new Node<T>;
            node->data = array[i];
            node->next = top;
            top = node;
        }
    }

    ~LinkStack()
    {
        Node<T> *deleteNode = NULL;
        deleteNode = top;
        top = top->next;
        delete deleteNode;
    }

    void push(T x);
    T pop();
    void print();
    T gettop() { if (top != NULL) return top->data; }
    int Empty() { top == NULL ? return 1 : return 0; }
private:
    Node <T> *top;
};

template < typename T >
void LinkStack<T>::push(T x)
{
    Node<T> *s;
    s = new Node<T>;
    s->data = x;
    s->next = top;
    top = s;
}

template < typename T >
T LinkStack<T>::pop()
{
    T x;
    Node<T> *p;
    if (top == NULL)throw"下溢";
    x = top->data; p = top;
    top = top->next;
    delete p;
    return x;
}

template <class T>
void LinkStack<T>::print()
{
    Node<T> *node = top;
    while (node->next != NULL) {
        cout << node->data << " ";
        node = node->next;
    }
    cout << node->data << endl;
}

void main()
{
    int arr[] = { 1,2,3,4,5 };
    cout << "创建对象:1,2,3,4,5依次入栈 " << endl;
    LinkStack<int> a(arr, 5);
    cout << "遍历栈内的元素:";
    a.print();
    cout << "出栈一个元素" << a.pop() << endl;
    cout<<"结果如下:" ;
    a.print();
    cout << "现在栈顶元素为:" << a.gettop();
    cout << "入栈元素6~10:" << endl;
    for (int i = 6; i <= 10; i++)
    {
        a.push(i);
    }
    cout << "遍历栈内的元素:";
    a.print();
}

2.实验结果
数据结构:实验四栈和队列的基本操作实现及其应用

四.实验总结
创立对象1,2,3,4,5依次入栈,遍历结果5,4,3,2,1,出栈一个元素5,得遍历结果4,3,2,1,入栈元素6,7,8,9,10,遍历结果10,9,8,7,6,4,3,2,1.