鏈表復(fù)習(xí)(二)

刪除鏈表函數(shù):

void delete_node(int index){
       if(head==NULL){
           return;
       }
       Node* current_node=head;
       int count=0;
       if(index==0){
           head=head->next;
           delete current_node;
           return;
       }

       while(current_node->next!=NULL&&count<index-1){
           current_node=current_node->next;
           count++;
       }
       if(count==index-1&&current_node->next!=NULL){
           Node* delete_node=current_node->next;
           current_node->next=delete_node->next;
           delete delete_node;
           
       }
   }

反轉(zhuǎn)鏈表函數(shù):

void reverse(){
        if(head==NULL){
            return;        
        }
        Node *next_node,*current_node;
        current_node=head->next;
        head->next=NULL;
        while(current_node!=NULL){
            next_node=current_node->next;
            current_node->next=head;
            head=current_node;
            current_node=next_node;
        }
    }

循環(huán)鏈表:

注意head代表頭結(jié)點,也代表尾節(jié)點

void insert(Node *node, int index) {
       if (head == NULL) {
           head = node;   //當(dāng)只有一個節(jié)點時head的next就是head自己
           head->next = head;
           return;
       }
       if (index == 0) {
           node->next = head->next; //在head后插入
           head->next = node;
           return;
       }
       Node *current_node = head->next;
       int count = 0;
       while (current_node != head && count < index – 1) {
           current_node = current_node->next;
           count++;
       }
       if (count == index – 1) {
           node->next = current_node->next;
           current_node->next = node;
       }
       if (node == head->next) {//如果把node插在了head后面則將head設(shè)置為node
           head = node;
       }
   }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容