设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 数据 创业者 手机
当前位置: 首页 > 服务器 > 安全 > 正文

《数据结构》一位同学链表程序调试--供大家参考

发布时间:2021-05-16 04:17 所属栏目:53 来源:网络整理
导读:大家好,下面是一位同学程序的调试修改内容,修改内容均用红色注释注明了,好多同学均是发生同样的错误,请大学阅读。 请思考,一定要学会和理解; 希望大家多动调试程序。 #includeiostream ? ? using namespace std; ? ? ? ?? templateclass T ? ? struct

大家好,下面是一位同学程序的调试修改内容,修改内容均用红色注释注明了,好多同学均是发生同样的错误,请大学阅读。

请思考,一定要学会和理解;

希望大家多动调试程序。

#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(); ? ?
} ? ?

祝大家程序调试成功!

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读