チェーンテーブルの初期化、削除・変更など
この数日ずっとチェーン時計を見ていて、最初は少しぼんやりしていて、2日見て、それからチェーン時計が実際にとても簡単であることを発見して、主に把握して、どのようにチェーン時計が空であることを判断して、チェーン時計はどのように表示して、削除して操作を調べる時、どのように現在のノードを操作して、メモリの漏れに注意して、以上のいくつかの点を掌握して、チェーン時計は多くないはずで、くだらない話は多く言わないで、直接コードをかき回します.
#include<iostream>
using namespace std;
class Node{
public:
int data;
Node *next;
Node(int x){
data=x;
next=NULL;
}
};// , struct
class Linklist{
private:
Node *head;
public:
void insert(Node *node,int index){
if(head==NULL){
head=node;
return;
}// ,true ,
if(index==0){
node->next=head;
head=node;
return;
}// ,true ( ),
Node *current=head;//
int i=0;
while(current->next!=NULL && i<index-1){
current=current->next;
i++;
}//
if(i==index-1){
node->next=current->next;
current->next=node;
}// ,
}
void output(){
if(head==NULL){
return ;
}
Node *current=head;
while(current!=NULL){
cout<<current->data<<" ";
current=current->next;
}//
cout<<endl;
}
void deleteNode(int del_index){
if(head==NULL){
return;
}//
Node *current=head;
int i=0;
if(del_index==0){
head=head->next;
delete current;
return;
}//
while(current->next!=NULL && i<del_index-1){
current=current->next;
i++;
}//
if(i==del_index-1){
Node *del_node=current->next;// , delete current->next? 5 ,
current->next=current->next->next;//
delete del_node;
}// ,
}
void changeNode(int cha_index,int n){
Node *current=head;
int i=0;
while(current->next!=NULL && i<cha_index-1){
current=current->next;
i++;
}
if(i==cha_index-1){
current->next->data=n;
}
}
int queryNode(int queIndex){
Node *current=head;
int i=0;
int res;
while(current->next!=NULL&&i<queIndex-1){
current=current->next;
i++;
}
if(i==queIndex-1){
res=current->next->data;
}
return res;
}
};
int main(){
Linklist l1;
for(int i=1;i<=10;i++){
Node *node1=new Node(i);//
l1.insert(node1,i-1);//
}
cout<<endl;
cout<<"l1:"<<endl;
l1.output();
//l1.deleteNode(5);
//l1.changeNode(1,12);
cout<<l1.queryNode(1)<<endl;
//l1.output();
return 0;
}