线性表—使用链表实现
清华大学出版的《数据结构》真坑。什么变量没定义,什么模版引用错了。总之,有太多相同的错了
但是我还是纠正过来了。
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
不要让今天成为明天的遗憾!