⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 link2.h

📁 using queue to solve traffic matter by C++ in linux environment
💻 H
字号:
// FILE: link2.h// PROVIDES: A toolkit of ten template functions for manipulating linked lists.// Each node of the list contains a piece of data and a pointer to the next// node, as shown in this template struct:// //     template <class Item>        Item may be any of the C++ built-in types//     struct Node                  (int, char, etc.), or a class with a default//     {                            constructor, an assignment operator,//         Item data;               and a test for equality (x == y).//         Node *link;//     };//// FUNCTIONS in the linked list toolkit://   template <class Item>//   size_t list_length(Node<Item>* head_ptr)//     Precondition: head_ptr is the head pointer of a linked list.//     Postcondition: The value returned is the number of nodes in the linked//     list. The list itself is unaltered.////   template <class Item>//   void list_head_insert(Node<Item>*& head_ptr, const Item& entry)//     Precondition: head_ptr is the head pointer of a linked list.//     Postcondition: A new node containing the given entry has been added at//     the head of the linked list; head_ptr now points to the head of the new,//     longer linked list.////   template <class Item>//   void list_insert(Node<Item>* previous_ptr, const Item& entry) //     Precondition: previous_ptr points to a node in a linked list.//     Postcondition: A new node containing the given entry has been added//     after the node that previous_ptr points to.////   template <class Item>//   Node<Item>* list_search(Node<Item>* head_ptr, const Item& target)//     Precondition: head_ptr is the head pointer of a linked list.//     Postcondition: The pointer returned points to the first node containing//     the specified target in its data member. If there is no such node, the//     null pointer is returned. The list itself is unaltered.////   template <class Item, class SizeType>//   Node<Item>* list_locate(Node<Item>* head_ptr, SizeType position)//     Precondition: head_ptr is the head pointer of a list, and position > 0.//     Postcondition: The pointer returned points to the node at the specified//     position in the list. (The head node is position 1, the next node is//     position 2, and so on). If there is no such position, then the null//     pointer is returned. The list itself is unaltered.////   template <class Item>//   void list_head_remove(Node<Item>*& head_ptr)//     Precondition: head_ptr is the head pointer of a linked list, with at//     least one node.//     Postcondition: The head node has been removed and returned to the heap;//     head_ptr is now the head pointer of the new, shorter linked list.////   template <class Item>//   void list_remove(Node<Item>* previous_ptr)//     Precondition: previous_ptr points to a node in a linked list, and this//     is not the tail node of the list.//     Postcondition: The node after previous_ptr has been removed.////   template <class Item>//   void list_clear(Node<Item>*& head_ptr)//     Precondition: head_ptr is the head pointer of a linked list.//     Postcondition: All nodes of the list have been returned to the heap,//     and the head_ptr is now NULL.////   template <class Item>//   void list_copy//     (Node<Item>* source_ptr, Node<Item>*& head_ptr, Node<Item>*& tail_ptr)//     Precondition: source_ptr is the head pointer of a linked list.//     Postcondition: head_ptr and tail_ptr are the head and tail pointers for//     a new list that that contains the same items as the list pointed to by//     source_ptr.////   template <class Item>//   void list_piece//     (Node<Item>* source_ptr, Node<Item>* end_ptr,//     Node<Item>*& head_ptr, Node<Item>*& tail_ptr)//     Precondition: source_ptr and end_ptr are pointers to nodes on the same//     linked list, with the source_ptr node at or before the end_ptr node.//     Postcondition: head_ptr and tail_ptr are the head and tail pointers for//     a new linked list that contains the items from source_ptr to end_ptr.//     The original list is unaltered.#ifndef LINK2_H#define LINK2_H#include <stdlib.h> // Provides size_t    template <class Item>    struct Node    {        Item data;        Node *link;    };    // FUNCTIONS for the linked list toolkit    template <class Item>    size_t list_length(Node<Item>* head_ptr);    template <class Item>    void list_head_insert(Node<Item>*& head_ptr, const Item& entry);     template <class Item>    void list_insert(Node<Item>* previous_ptr, const Item& entry);    template <class Item>    Node<Item>* list_search(Node<Item>* head_ptr, const Item& target);    template <class Item, class SizeType>    Node<Item>* list_locate(Node<Item>* head_ptr, SizeType position);    template <class Item>    void list_head_remove(Node<Item>*& head_ptr);    template <class Item>    void list_remove(Node<Item>* previous_ptr);    template <class Item>    void list_clear(Node<Item>*& head_ptr);    template <class Item>    void list_copy       (Node<Item>* source_ptr, Node<Item>*& head_ptr, Node<Item>*& tail_ptr);    template <class Item>    void list_piece      (Node<Item>*  source_ptr, Node<Item>*  end_ptr,       Node<Item>*& head_ptr,   Node<Item>*& tail_ptr);#include "link2.template"  // Include the implementation#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -