| 
                         
        
            大家好,下面是一位同学程序的调试修改内容,修改内容均用红色注释注明了,好多同学均是发生同样的错误,请大学阅读。  
请思考,一定要学会和理解;  
希望大家多动调试程序。  
#include<iostream> ? ?  using namespace std; ? ?  ? ??  template<class T> ? ?  struct Student ? ?  { ? ?T data; ? ?  ? ? Student<T> * next; ? ?  }; ? ?  ? ??  template<class T> ? ?  class LinkList ? ?  { ? ?  public: ? ?  ? ? LinkList(); ? ?  ? ? LinkList(T a[],int n); ? ?  ? ? ~LinkList(); ? ?  ? ? void Insert(int i,T x); ? ?  ? ? T Delete(int i); ? ?  ? ? void PrintList(); ? ?  private: ? ?  ? ? Student<T> * first; ? ?  }; ? ?  ? ??  template<class T> ? ?  LinkList<T>::LinkList() ? ?  { ??first=new Student<T>; ? ?//增加了 <T>  ? ? first->next=NULL; ? ?  } ? ?  ? ??  template<class T> ? ?  LinkList<T>::LinkList(T a[],int n) ? ?  { ? ?Student<T> *s; ? ? ? ? ? ? ? ? ? ? ? ? ? //增加了这一行。  ? ? first=new Student<T>;first->next=NULL; ? ?//增加了 <T>  ? ? for(int i=0;i<n;i++) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //增加了?int?  ? ? { ? s=new Student<T>;s->data=a[i]; ? ? ? ? ? //?增加了 <T>?  ? ? ? ? s->next=first->next;first->next=s; ? ?  ? ? } ? ?  } ? ?  ? ? //?增加了下面函数  template <class T> ?  LinkList<T> :: ~LinkList( ) ?  { ?? Student<T> *q; ?  ? ? while (first != NULL) ? ? ? ? ?//释放单链表的每一个结点的存储空间 ?  ? ? { ??q = first; ? ? ? ? ? ? ? ? //暂存被释放结点 ?  ? ? ? ? first = first->next; ? ? ? ? // first指向被释放结点的下一个结点 ?  ? ? ? ? delete q; ? ? ?  ? ? } ?  } ?
   template<class T> ? ?  void LinkList<T>::Insert(int i,T x) ? ?  { ? ?Student<T> *p,*s; ? ? ? ? ? ? ? ? //?增加了这行代码  ? ? ?p=first;int count=0; ? ? ? ? ? // 增加?int  ? ? while(p!=NULL&&count<i-1) ? ?  ? ? {? ?p=p->next; ? ?  ? ? ? ? count++; ? ?  ? ? } ? ?  ? ? if(p==NULL)throw"输入错误" ; ?//?//增加了“?; ? ”  ? ? ? ? else{ ? ?  ? ? ? ? s=new Student<T>;s->data=x; ? ? ?//?增加了 <T>?  ? ? ? ? s->next=p->next;p->next=s; ? ?  ? ? } ? ?  } ? ?  ? ??  template<class T> ? ?  T LinkList<T>::Delete(int i) ? ?  { ? ? Student<T> *p,*q; ? ? ? ? ?///增加了这行  ? ? ? T x;  ? ? p=first;int count=0; ? ? ? ?// ?增加了int  ? ? 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 T> ? ?  void LinkList<T>::PrintList() ? ?  { ? ? Student<T> *p;  ? ? p=first->next; ? ?  ? ? while(p!=NULL) ? ?  ? ? { ??cout<<p->data<<" ?"; ? ?//增加了?" ?" (不是原来错误,主要为将数隔开)  ? ? ? ? p=p->next; ? ?  ? ? } ? ? cout<<endl; ? ? ? ? ? ? ? ?// 增加了这行 (不是原来错误,主要是将两次输出分行)  } ? ?  ? ??  void main( ) ? ? ?  { ?? int score[5]={10,20,40,50,60}; ? ? ?  ? ? LinkList<int> ScoreList(score,5); ? ?  ? ? ScoreList.PrintList(); ? ?  ? ? ScoreList.Insert(2,30); ? ?  ? ? ScoreList.PrintList(); ? ?  ? ? ScoreList.Delete(4); ? ?  ? ? ScoreList.PrintList(); ? ?  } ? ?
   
祝大家程序调试成功! 
        
            
        	
                        (编辑:滁州站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |