《数据结构》同学链表程序的调试修改代码示例(有代表性,请看看
发布时间:2021-05-15 05:44 所属栏目:53 来源:网络整理
导读:下面是一个同学的程序,自己不能调试通过。现将调试修改代码示众,让大家学习。并讨论。 请大家注意红色字体注释。大多是 粗心 错误;不知道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(); ? ? } ? (编辑:ASP站长网) |
相关内容
网友评论
推荐文章
热点阅读