加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

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

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

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

希望大家多动调试程序。

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

祝大家程序调试成功!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读