爱问知识人 爱问教育 医院库

大哥,帮忙看一下我写的程序,好像有很多问题

首页

大哥,帮忙看一下我写的程序,好像有很多问题

//============================
//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;
}

提交回答
好评回答
  • 2010-10-08 11:15:12
    你应该提供全部内容及使用的开发系统版本,否则不好判断.

    1***

    2010-10-08 11:15:12

其他答案

    2010-10-17 22:03:02
  • 是数据结构的练习题目 找清华 数据结构的习题或书好好读读

    t***

    2010-10-17 22:03:02

  • 2010-10-07 17:20:12
  • 算法上的问题不少,不过我比较忙,改得比较急,所以只是普通得测试和调试了一下,压力测试没时间搞,先将就着用吧。。。

    k***

    2010-10-07 17:20:12

  • 2010-10-05 23:12:13
  • 啊,好晕,编程很麻烦。

    龙***

    2010-10-05 23:12:13

类似问题

换一换
  • VC++ 相关知识

  • 电脑网络技术
  • 电脑网络

相关推荐

正在加载...

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):