2011-08-29 75 views
-2

大家好香港專業教育學院寫了下面的代碼C++ XCODE需要幫助初學者使用

除了當我在Xcode編譯它的任何援助將是我得到一個錯誤最感激

#include <iostream.h> 

class node 
{ 
public: 
int value;   //value stored in the node 
node *next;   //pointer to next node 
node *prev;   //pointer to previous node 
}; 

class dlist 
{ 
public: 
node *front;  //pointer to front of list 
node *back;  //pointer to back of list 

dlist() 
{ 
front=NULL; 
back=NULL; 
} 

void insertFront(int value);    
void insertBack(int value); 
void removeFront(); 
void removeBack(); 
void insertBefore(int value,node *nodeB); 
void insertAfter(int value,node *nodeA); 
void removeBefore(node *nodeB); 
void removeAfter(node *nodeA); 
void removeNode(node *newNode); 
void printDListFront(); 
void printDListBack(); 
}; 

//insert a node before nodeB 
void dlist::insertBefore(int value,node *nodeB)  
{ 
node *newNode; 
newNode=new node(); 
newNode->prev=nodeB->prev; 
newNode->next =nodeB; 
newNode->value =value; 
if(nodeB->prev==NULL) 
{ 
this->front=newNode; 
} 
nodeB->prev=newNode; 

} 

//insert a node before the front node 
void dlist::insertFront (int value) 
{ 
node *newNode; 
if(this->front==NULL) 
{ 
newNode=new node(); 
this->front=newNode; 
this->back =newNode; 
newNode->prev=NULL; 
newNode->next=NULL; 
newNode->value=value; 

} 
else 
{ 
insertBefore(value,this->front); 
} 
} 

//insert a node after nodeB 
void dlist::insertAfter(int value,node *nodeB) 
{ 
node *newNode; 
newNode=new node(); 
newNode->next= nodeB->next ; 
newNode->prev =nodeB; 
newNode->value =value; 

if(nodeB->next==NULL) 
{ 
cout<<"\n "<< endl; 
this->back =newNode; 
} 
nodeB->next=newNode; 
cout<<"2"<<endl; 
} 
//insert a node after the last node 
void dlist::insertBack (int value) 
{   
if(this->back==NULL) 
{ 
cout<<"insert at back"; 
insertFront(value); 
} 
else 
{ 
cout<<"insert at back"; 
insertAfter(value,this->back ); 
} 
} 

//remove the front node 
void dlist::removeFront() 
{ 
removeNode(this->front); 
} 

//remove a back node 
void dlist::removeBack () 
{ 
removeNode(this->back); 

} 

//remove before a node 
void dlist::removeBefore(node *nodeB) 
{ 

if(nodeB->prev==this->front) 
{ 
this->front=nodeB; 
this->front->prev=NULL; 
} 
else 
{ 
removeNode(nodeB->prev); 
} 
} 

//remove after a node 
void dlist::removeAfter(node *nodeA) 
{ 
if(nodeA->next==this->back) 
{ 
this->back=nodeA; 
this->back->next=NULL; 
} 
else 
{ 
removeNode(nodeA->next); 
} 
} 

//remove a perticular node 
void dlist::removeNode(node *nodeToRemove) 
{ 
if(nodeToRemove==this->front) 
{ 
this->front=this->front->next; 
this->front->prev=NULL; 
} 
else if (nodeToRemove==this->back) 
{ 
this->back=this->back->prev; 
this->back->next=NULL ; 
} 
else 
{ 
nodeToRemove->prev->next=nodeToRemove->next; 
nodeToRemove->next->prev=nodeToRemove->prev; 
} 
} 

//Print the list from front 
void dlist::printDListFront() 
{ 
node* curr2; 
curr2= this->front; 
cout<<"\n-----\n"; 
cout<<"Queue\n"; 
cout<<"-----\n"; 
//cout<<"size:"<<getQueueSize()<<endl; 
while(curr2!=NULL) 
{ 
cout<<" |"<<curr2->value<<"|"; 
curr2=curr2->next; 
} 
cout<<endl; 
}// print the Double Linked List from front 


// print the Double Linked List from backwards 
void dlist::printDListBack() 
{ 
node* curr2; 
curr2= this->back; 
cout<<"\n-----\n"; 
cout<<"Queue\n"; 
cout<<"-----\n"; 
//cout<<"size:"<<getQueueSize()<<endl; 
while(curr2!=NULL) 
{ 
cout<<" |"<<curr2->value<<"|"; 
curr2=curr2->prev; 
} 
cout<<endl; 
}// print the Double Linked List from back 

void main() 
{ 
dlist *st ; 
st= new dlist(); 
st->insertBack(8); 
st->printDListFront(); 
st->insertBack(5); 
st->printDListFront(); 
st->insertBack(6); 
st->printDListFront(); 
st->insertFront(1) ; 
st->printDListFront(); 
st->insertFront(3) ; 
st->printDListFront(); 
st->insertBack(7); 
st->printDListFront(); 
st->removeFront(); 
st->printDListFront(); 
st->removeBack(); 
st->printDListFront(); 
} 

我的錯誤是主要必須返回「int」

回答

3

從ISO/IEC 14882:2003(E) - 3.6.1

的實現不應預先定義的主功能。該功能不得超載。它應該有一個類型爲int的返回類型,否則它的類型是實現定義的。所有的實現應允許兩個主要的以下定義:

int main() { /* ... */ } and 

int main(int argc, char* argv[]) { /* ... */ } 

也沒有必要包括.h一個標準的頭文件。

#include <iostream> // is sufficient