线性表—使用链表实现

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

但是我还是纠正过来了。

 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

 

posted @ 2013-10-25 21:44  Talbot3  阅读(381)  评论(0编辑  收藏  举报