实验二:单链表实现N个学生成绩操作

来源:互联网 发布:mac刺客信条2登陆白屏 编辑:程序博客网 时间:2024/04/27 21:36

LinkList.h

 

#ifndef LinkList_H#define LinkList_Htemplate<class DataType>struct Node{DataType data;Node<DataType>*next;};template<class DataType>class LinkList{public:LinkList();LinkList(DataType a[],int n);~LinkList();int Locate(DataType x);void Insert(int i,DataType x);DataType Delete(int i);void PrintList();private:Node<DataType>*first;};#endif


 

 

LinkList.cpp

 

#include<iostream>using namespace std;#include"LinkList.h"template<class DataType>LinkList<DataType>::LinkList(){first=new Node<DataType>;first->next=NULL;}template<class DataType>LinkList<DataType>::LinkList(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>LinkList<DataType>::~LinkList(){Node<DataType>*q=NULL;while(first!=NULL){q=first;first=first->next;delete q;}}template<class DataType>void LinkList<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 LinkList<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 LinkList<DataType>::Locate(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 LinkList<DataType>::PrintList(){Node<DataType>*p=first->next;while(p!=NULL){cout<<p->data<<" ";p=p->next;}cout<<endl;}


 

 

LinkList_main.cpp

 

#include<iostream>using namespace std;#include"LinkList.cpp"void main(){int r[5]={95,68,87,85,82};LinkList<int>L(r,5);cout<<"5个学生的成绩分别是:"<<endl;L.PrintList();cout<<"现有A学生成绩为89"<<endl; try{L.Insert(3,89);}catch(char *s){cout<<s<<endl;}cout<<"将A学生的成绩插到第3个后成绩为:"<<endl;L.PrintList();cout<<"成绩为85的学生排在:";cout<<L.Locate(85)<<endl;cout<<"删除第4个学生的成绩前,所有学生成绩分别为:"<<endl;L.PrintList();try{L.Delete(4);}catch(char *s){cout<<s<<endl;}cout<<"删除后所有学生成绩分别为:"<<endl;L.PrintList();}

 

 


0 0
原创粉丝点击