实验三单链表

xiaoxiao2021-02-28  50

#include<iostream.h> template<class DataType> struct Node { DataType data; Node<DataType>*next; } ; template<class DataType> class ScoreList { public: ScoreList(); ScoreList(DataType a[],int n); ~ScoreList(); void Insert(int i,DataType x); int Search(DataType x); DataType Delete(int i); void Print(); private: Node<DataType>*first; }; template<class DataType> ScoreList<DataType>::ScoreList() { first=new Node<DataType>; first->next=NULL; } template<class DataType> ScoreList<DataType>::ScoreList(DataType a[],int n) { Node<DataType>*r,*s; first=new Node<DataType>; r=first; for(int i=0;i<n;i++) {s=new Node<DataType>; s->data=a[i]; r->next=s;r=s; } r->next=NULL;  } template<class DataType> ScoreList<DataType>::~ScoreList() { Node<DataType>*q=NULL; while(first!=NULL) { q=first; first=first->next; delete q; } } template<class DataType> void ScoreList<DataType>::Insert(int i,DataType x) { Node<DataType>*p=first,*s=NULL; int count=0; while(p!=NULL&&count<i-1) { p=p->next; count++; } if(p==NULL)throw"位置"; else{ s=new Node<DataType>;s->data=x; s->next=p->next;p->next=s; }  } template<class DataType> DataType ScoreList<DataType>::Delete(int i) { Node<DataType>*p=first,*q=NULL; DataType x; int count=0; while(p!=NULL&&count<i-1) { p=p->next; count++; } if(p==NULL||p->next==NULL)throw"位置"; else { q=p->next;x=q->data; p->next=q->next; delete q; return x; } } template<class DataType> int ScoreList<DataType>::Search(DataType x) { Node<DataType>*p=first->next; int count=1; while(p!=NULL) { if(p->data==x)return count; p=p->next; count++; } return 0; } template<class DataType> void ScoreList<DataType>::Print() {    Node<DataType>*p=first->next;    while(p!=NULL)    {     cout<<p->data<<" ";     p=p->next;    }    cout<<endl; } int main() { int r[5]={11,22,33,44,55}; ScoreList<int>S(r,5); cout<<"插入前数据为"<<endl; S.Print(); cout<<"在第3个位置插入成绩为60的元素"<<endl; try { S.Insert(3,60); } catch(char *s) { cout<<s<<endl; } cout<<"现数据为"<<endl; S.Print(); cout<<"删除第5个成绩"<<endl; S.Delete(5); cout<<"现数据为"<<endl; S.Print(); cout<<"查找成绩为55的位置"<<endl; cout<<S.Search(55)<<endl;

return 0;}

转载请注明原文地址: https://www.6miu.com/read-2626357.html

最新回复(0)