单链表
结点定义为一个结构体
struct LinkNode{
int data;
LinkNode * next;
};
然后定义一个链表类
class List{
private:LinkNode* first;
public:
list(){first=null;}
bool insert(int i,int data);
bool remove(int position);
LinkNode* getLinkNode(int data);
}
bool List::insert(int i,int data){
if(first==null||i==0){
LinkNode* newNode=new LinkNode(data);
if(newNode==NULL){
cerr<<"distributed error\n";
return false;
}
newNode->next=NULL;
first=newNode;
return true;
}else{
LinkNode* currentNode=first;
for(int k=0;k<i;k++){
if(currentNode==NULL)break;
currentNode=currentNode->next;
}
if(currentNode==NULL){
cerr<<"insert error\n";
return false;
}
newNode->next=currentNode-next;
currntNode->next=newNode;
return true;
}
}
bool List::remove(int position){
LinkNode* tempNode=first;
for(int k=0;k<position-1;k++){
if(tempNode->next==NULL){
cerr<<"outOfBound\n";
return false;
}
tempNode=tempNode->next;
}
LinkNode* delNode=tempNode->next;
tempNode->next=(tempNode->next)->next;
delete delNode;
return true;
}
LinkNode* tempNode=first;
for(int k=0;k<position-1;k++){
if(tempNode->next==NULL){
cerr<<"outOfBound\n";
return false;
}
tempNode=tempNode->next;
}
LinkNode* delNode=tempNode->next;
tempNode->next=(tempNode->next)->next;
delete delNode;
return true;
}
LinkNode* List::getLinkNode(int data){
LinkNode* currentNode=first;
while(currentNode!=NULL){
if(currentNode->data==data)
return currentNode;
currentNode=currentNode->next;
}
return NULL;
}
}