大哥,帮忙看一下我写的程序,好像有很多问题
//============================ //List.h //============================ #include<iostream> using namespace std; //---------------------------- #ifndef LIST #define LIST typedef int ElementType; class List{ //节点类 private: class Node{ public: ElementType data; Node * next; Node():next(NULL){} Node(ElementType dataVal):next(NULL){} }; typedef Node * NodePointer; //函数成员 public: List(); ~List(); List(const List & origList); const List & operator=(const List & rightHandSide); bool empty() const{return mySize==0;}//判空 void insert(ElementType dataVal,int index);//插入 void erase(int index);//删除 void display(ostream & out) const ;//遍历 void append(List & rightList);//合并 int getmySize(){return mySize;} //数据成员 private: NodePointer first; int mySize; }; ostream & operator<<(ostream & out,const List & oList);//列表的输出 #endif //============================ //List.cpp #include<iostream> #include"List.h" using namespace std; //构造函数 List::List():first(NULL){} //析构函数 List::~List(){ NodePointer predptr=first,ptr; while(predptr!=NULL){ ptr=predptr->next; delete predptr; predptr=ptr; } } //拷贝构造函数 List::List(const List & origList):mySize( Size){ if(mySize==0) return ; NodePointer newptr1,ptr1,ptr2; ptr2= rst; newptr1=new Node(ptr2->data); first=ptr1=newptr1; while(ptr2!=NULL){ ptr2=ptr2->next; newptr1=new Node(ptr2->data); ptr1->next=newptr1; } } //赋值运算符 const List & List::operator=(const List & rightHandSide){ if(this!=&rightHandSide){ mySize= Size; //先把原链表删除 NodePointer predptr=first,ptr; while(predptr!=NULL){ ptr=predptr->next; delete predptr; predptr=ptr; } //删除后再复制 //if(mySize==0) return ; NodePointer newptr1,ptr1,ptr2; ptr2= rst; newptr1=new Node(ptr2->data); first=ptr1=newptr1; while(ptr2!=NULL){ ptr2=ptr2->next; newptr1=new Node(ptr2->data); ptr1->next=newptr1; } } return *this; } //插入 void List::insert(ElementType dataVal,int index){ if(index<0||index>mySize){ cerr<<"Illegal location to insert "<<index<<" List unchanged"<<endl; return ; } NodePointer predptr,newptr; newptr=new Node(dataVal); if(index==0){ newptr->next=first; first=newptr; } else{ predptr=first; for(int i=1;i<index;i++) predptr=predptr->next; predptr->next=newptr; } mySize++; } //删除 void List::erase(int index){ NodePointer predptr,ptr; if(index==0){ ptr=first; first=ptr->next; } else{ predptr=first; for(int i=1;i<index;i++) predptr=predptr->next; ptr=predptr->next; predptr->next=ptr->next; } delete ptr; mySize--; } //遍历 void List::display(ostream & out) const{ NodePointer ptr=first; while(ptr!=NULL){ out<data; ptr=ptr->next; } // return out; }
你应该提供全部内容及使用的开发系统版本,否则不好判断.
是数据结构的练习题目 找清华 数据结构的习题或书好好读读
算法上的问题不少,不过我比较忙,改得比较急,所以只是普通得测试和调试了一下,压力测试没时间搞,先将就着用吧。。。
啊,好晕,编程很麻烦。
答:这样你只删除了new ScreenStruct[10]的第一个结构体,要用个for循环,挨个删除。要不试试delete []p_Screen,也行详情>>
答:桌面图标是无法自动得到,因为图标的存在与否应用程序无法知道。 如果你确认在桌面上可能会有这个图标,那么你只要遍历桌面所有的图标,然后把指向该应用程序的图标都更改...详情>>