STL的简单实现(二) 链表

简单实现了STL的链表

主要功能包括访问首尾节点,节点的插入与标记与删除,以及任意起点顺序访问


#pragma once
/*  在此此文件或 此文件包含的头文件中定义名为ListNote的结构体 作为数据*/
#include
using namespace std;
struct ListNote {
 int age;
 char name[100];
 ListNote *next;
};
class LIST {
private:
 ListNote * list;  // 浮动点
 ListNote *head;   //首节点
 ListNote *final;  //尾节点
 ListNote *symbol;   //标记点
public:
 LIST() { head = nullptr; list = nullptr; final = nullptr; symbol = nullptr; }
 LIST(ListNote *List) {
  head = List;
  list = head;
  final = head;
  head->next = nullptr;
  symbol = nullptr;
 }
 ~LIST() { if (head == nullptr) return;  clear(); }
 ListNote* GetHeadList() { return head; }   //获得头结点地址
 ListNote* GetFinalList() { return final; }  //获得尾节点地址
 ListNote* GetNextList() {      //以当前list为起点 逐个访问每个节点
  if (list == nullptr) return list;
  ListNote *temp = list; list = list->next; return temp;
 }
 ListNote* GetList() {  return list; }
 void ListToHead() { list = head; }     //将浮动点至于首节点
 void InsertList(ListNote note) {     //新增节点
  ListNote *InsertNote = new ListNote;
  if (head == nullptr) {
   head = InsertNote;
   list = head;
   final = head;
  }
  else
   final->next = InsertNote;
  *InsertNote = note;
  InsertNote->next = nullptr;
  final = InsertNote;
 }
 void SetSymbol() { symbol = list; }   //新增记录点
 void ListToSymbol() { if (symbol == nullptr) { cout << "无记忆点\n"; return; } list = symbol; }  //将list移至记录点
 void clear() { ListNote *current = head,*temp=head;
 while (current != nullptr) {
  temp = current;
  current = current->next;
  delete temp;
  temp = nullptr;
  }
 head = nullptr;
 }
 void DeleteList() {   //清除当前节点
  ListNote *temp = head;
  while (!(temp->next == list))
   temp = temp->next;
  temp->next = list->next;
  delete list;
  list = list->next;
 }
};


功能与实现较简陋,如有改进意见,欢迎各路大神提出.


你可能感兴趣的:(STL的简单实现(二) 链表)