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

《数据结构》同学链表程序的调试修改代码示例(有代表性,请看看

发布时间:2021-05-15 15:05:05 所属栏目:安全 来源:网络整理
导读:下面是一个同学的程序,自己不能调试通过。现将调试修改代码示众,让大家学习。并讨论。 请大家注意红色字体注释。大多是粗心错误;不知道C++是选样学的。 原程序链接:http://blog.csdn.net/z1094219402/article/details/40559877 #includeiostream ? usi

下面是一个同学的程序,自己不能调试通过。现将调试修改代码示众,让大家学习。并讨论。

请大家注意红色字体注释。大多是粗心错误;不知道C++是选样学的。

原程序链接:http://blog.csdn.net/z1094219402/article/details/40559877


#include<iostream> ?

using namespace std; ?

//下面原来是单独存于头文件的 内容,现在放在一起

#ifndef LinkList_H ?
#define LinkList_H ?
??
template<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 ?

//原来是类的函数定义文件内容

//#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"location"; ?
? ? else
{ ?? ? ?s=new Node<DataType>; ?//这里改了原来是NodeV
? ? ? ? s->data=x; ? ? ? ? ? ? ? ?//这里改了原来是s
? ? ? ? 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"location" ; //这里加了一个;?
? ? else{ ?
? ? ? ? q=p->next;x=q->data; ?
? ? ? ? p->next=q->next; ?
? ? ? ? delete q; ?
? ? ? ? return x; ?//这里改了原来是q
? ? } ?
} ?
??
template<class DataType> ?
int LinkList<DataType>::Locate (DataType x) ?
{ ??Node<DataType> * p=first->next; ?
? ? int count=1; ?//这里改了,原来是小写L,是数字1
? ? while(p!=NULL) ?
? ? { ?
? ? ? ? if(p->data==x) return count; ?
? ? ? ? p=p->next; ?
? ? } ?
? ? 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; ?
} ?


//主程序内容
//#include<iostream> ?//因放到一个文件这些上面有
//using namespace std; ?
//#include"LinkList.cpp" ?//因代码在一个文件里,去掉这行
void main() ?
{ ??int r[5]={1,2,3,4,5}; ?
? ? LinkList<int>L(r,5); ?//这里改了,原来是linklist
? ? cout<<"show the data that are before inserting: "<<endl; ?
? ? L.PrintList(); ?
? ? try ?
? ? { ?
? ? ? ? L.Insert(2,3); ?
? ? } ?
? ? catch (char * s) ?
? ? { ?
? ? ? ? cout<<s<<endl; ?
? ? } ?
? ? cout<<"apply the order that insert the data and show them: "<<endl; ?
? ? L.PrintList(); ?
? ? cout<<"the location of the element whose number is 5 directs: "; ?
? ? cout<<L.Locate(5)<<endl; ?
? ? cout<<"show the data that are infron the operation of delection: "<<endl; ?
? ? L.PrintList(); ?
? ? try ?
? ? { ?
? ? ? ? L.Delete(1); ?//这里原来是delect(1;)
? ? } ?
? ? catch(char * s) ?
? ? { ?
? ? ? ? cout<<s<<endl; ? //这里改了 原来是end ? ? ? } ? ? ? L.PrintList(); ? ? } ?

(编辑:大连站长网)

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