链表模板c++

关于链表的数据成员和一般的方法

下面是头文件:

template <class T>
class QueueTp{
private:
    struct Node{T item; struct Node * next;};
    enum {Q_SIZE=10};
    Node *front;
    Node *rear;
    int items;
    const int qsize;
    QueueTp():qsize(0){};
    QueueTp &operator=(const QueueTp &q) {return *this;}
public:
    QueueTp(int n=Q_SIZE);
    ~QueueTp ();
    bool isempty() const;
    bool isfull() const;
    int queuecount() const;
    bool enqueue(const T & s);
    bool dequeue(T & s);

};

方法的定义:

#include <stdio.h>
#include "QueueTp.h"
template<class T>
QueueTp<T>::QueueTp(int n):qsize(n){
    front=rear=nullptr;
    items=0;
}

template<class T>
QueueTp<T>::~QueueTp(){
    Node *temp;
    while (front!=nullptr) {
        temp=front;
        front=front->next;
        delete temp;
    }
}

template<class T>
bool QueueTp<T>::isempty() const{
    return items==0;
}

template<class T>
bool QueueTp<T>::isfull() const{
    return items==qsize;
}
template<class T>
int QueueTp<T>::queuecount()const{
    return items;
}

template<class T>
bool QueueTp<T>:: enqueue(const T & s){
    if(isfull())
        return false;
    Node *temp(s,nullptr);
    if (front==nullptr) {
        front=temp;
    }
    items++;
    rear->next=temp;
    rear=temp;
    rear->next=nullptr;
    return true;
}

template<class T>
bool QueueTp<T>:: dequeue(T & s){
    if (isempty()) {
        return  false;
    }
    s=front->item;
    items--;
    Node *temp;
    temp=front;
    front=front->next;
    delete temp;
    if (items==0) {
        rear=nullptr;
    }
    return true;

}
时间: 2024-10-24 11:15:57

链表模板c++的相关文章

单向链表模板

写个单向链表模板练练手: #include <bits/stdc++.h> using namespace std; //create // delete // modify // search class Node{ public: int data; Node* ptr; Node(int elem= 0, Node* node= NULL){ this->data= elem; this->ptr= NULL; } }; class MyList{ private: Node

C++ 单链表模板类实现

单链表的C语言描述 基本运算的算法--置空表.求表的长度.取结点.定位运算.插入运算.删除运算.建立不带头结点的单链表(头插入法建表).建立带头结点的单链表(尾插入法建表),输出带头结点的单链表 #include<cstdio>#include<iostream>using namespace std;template <class T>class Linklist{private: struct node { T date; node * next; node():n

C++数据结构 单链表(模板类)

利用模板类实现单链表及其功能 需要实现的操作: [1] push_back       [2] push_front [3] show_list       [0] quit_system [4] pop_back        [5] pop_front [6] insert_val      [7] delete_val [8] find            [9]length [10] clear          [11]destroy [12] reserv         [13]

链表模板总结

单链表: public class ListNode { int val; ListNode next; ListNode (int val) { this.val = val; } } 1.反转单链表 public void reverseLinkedList(ListNode head) { ListNode pre = null; while (head != null) { ListNode next = head.next; head.next = pre; pre = head; h

List链表模板类的简单实现(部分方法递归操作)

善哉. 此篇博客,旨在剖析下操作单链表时的递归思想.望各位施主笑纳. 1. 递归删除结点 * 空链表 - 直接返回 * 非空,若未找到待删除元素,递归.若找到,删除节点,返回尾链头 * 回溯,衔接形成新链 1 _Node* myErase_R(const Object& elem, _Node* curr){ 2 //空链 或 无此元素 3 if (curr == NULL) return NULL; 4 5 if (curr->elem == elem){ 6 _Node* tmp = c

【块状链表】AutSky_JadeK的块状链表模板+总结(STL版)

Part 1.块状链表.   定位 插入 删除 数组 O(1) O(n) O(n) 链表 O(n) O(1) O(1) 对于线性表的以上常见操作来说,数组和链表都无法有效地解决.但是,若我们将链表的每个节点存成一个数组,使得链表里每个节点的数据拼接起来就是原先的线性表中的内容(即块状链表),并且数组的大小合适的话,以上的操作都能比较好地解决了.根据均值不等式,若每个块的大小定为sqrt(n)左右最优,此时块数也是sqrt(n)左右,易证.以下是块状链表的基础操作的思想.复杂度和代码. 一.声明.

C++链表模板类

思想和上篇文章差不多,只是换了层包装. 直接上代码: // linklist.h #include <iostream> #include <cstdio> using namespace std; template <typename T> struct Node { T t; Node<T> *next; }; template <typename T> class LinkList { public: LinkList(); ~LinkLi

单链表(模板类)

#include<iostream>#include<assert.h>using namespace std; template <class T>struct Node{ Node(const T& x) :_data(x) , _pNext(NULL) { } Node<T> *_pNext; T _data;};template <class T>class SList{public: SList() :_pHead(NULL)

链表模板、队列模板、顺序表模板、栈模板、

//利用容器适配器实现栈和队列 #pragma once #include<iostream> #include<string> #include<cassert> using namespace std; template<typename T> struct Node { public: Node(const T& d) :_next(NULL) , _prev(NULL)     ,_data(d){} T _data; Node<T&g