• 线性表—使用链表实现


    清华大学出版的《数据结构》真坑。什么变量没定义,什么模版引用错了。总之,有太多相同的错了

    但是我还是纠正过来了。

     1 //LinkList.h
     2 template <class T>
     3 struct Node
     4 {
     5     T data;
     6     Node<T> *next;
     7 };
     8 
     9 template<class T>
    10 class LinkList
    11 {
    12 public:
    13     LinkList();
    14     ~LinkList();
    15     void CreateList(int n);
    16     void Insert(int i,T e);
    17     T Delete(int i);
    18     T GetElem(int i);
    19     int Locate(T e);
    20     T prior(T e);
    21     int Empty();
    22     int Length();
    23     void CLear();
    24     void ListDisplay();
    25 private:
    26     Node<T> *Head;
    27 };
     1 //LinkList.cpp中
     2 #ifndef LINKLIST_H
     3 #define LINKLIST_H
     4 #inlcude"LinkList.h"
     5 template <class T>
     6 LinkList<T>::LinkList()
     7 {
     8     Head=new Node<T>;
     9     Head->next=NULL;
    10 }
    11 
    12 template <class T>
    13 LinkList<T>::~LinkList()
    14 {
    15     while(Head)
    16     {
    17         p=Head;
    18         Head=Head->next;
    19         delete p;
    20     }
    21     Head=NULL;
    22 }
    23 
    24 template <class T>
    25 void LinkList<T>::CreateList(int n)
    26 {
    27     Node<T> *p,*s;
    28     p=Head;
    29     for(int i;i<=n;i++)
    30     {
    31         s=new Node<T>;
    32         cin>>s-data;
    33         s->next=p->next;
    34         p->next=s;
    35         p=s;
    36     }
    37 }
    38 
    39 template <class T>
    40 T LinkList<T>::GetElem(int i)
    41 {
    42    p=Head->next;
    43    j=1;
    44    while(p&&j<i)
    45    {
    46        p=p->next;j++;
    47    }
    48    if(!p||j>i)
    49         throw "sistion";
    50    else
    51         return p->data;
    52 }
    53 
    54 template <class T>
    55 void LinkList<T>::Insert(int i,T e)
    56 {
    57     p=Head;
    58     int j=0;
    59     while(p&&j<i-1)
    60     {
    61         p=p->next;
    62         j++;
    63     }
    64     if(!p||j>i-1) throw"sistion error";
    65     else
    66     {
    67         Node<T> *s;
    68         s=new Node<T>;
    69         s->data=e;
    70         s->next=p->next;
    71         p->next=s;
    72     }
    73 }
    74 
    75 template<class T>
    76 T LinkList<T>::Delete(int i)
    77 {
    78     T x;
    79     Node<T> *p,*q;
    80     p=Head;
    81     int j=0;
    82     while(p->next&&j<i-1)
    83     {
    84         p=p->next;
    85         j++;
    86     }
    87     if(!p->next || j>i-1)
    88         throw "sistion error";
    89     else
    90         {
    91             q=p->next;
    92             p->next=q-next;
    93             x=q->data;
    94             delete q;
    95             return x;
    96         }
    97 }
    98 #endif // LINKLIST_H
  • 相关阅读:
    Spring中的事务传播行为与隔离级别
    redis分布式共享锁模拟抢单的实现
    synchronized关键字修饰非静态方法与静态方法的区别
    docker安装Tensorflow并使用jupyter notebook
    python 图像处理(4):图像的绘制
    python 图像处理(3):图像数据类型及颜色空间转换
    python 图像处理 (2):图像像素的访问与裁剪
    python 读取图像的几种方法
    python 图像处理:图像的读取、显示与保存
    NLP 正向、逆向 分词
  • 原文地址:https://www.cnblogs.com/orangebook/p/3388629.html
Copyright © 2020-2023  润新知