c實現逆轉單向迴圈鍊錶

2021-06-21 10:25:41 字數 1379 閱讀 9788

1.帶頭結點實現

#include #include typedef struct nodelinknode,*linklist;

void reverseonewaycircularlinkedlist(linklist head)

//p->next = head;沒有必要

p =head;

while(p->next != head) }

linklist createonewaycircularlinkedlist(int a, int n)//頭插法建立帶頭結點的單迴圈鍊錶

} p->next = head;//非常重要。否則,頭指標沒有前驅,構不成單迴圈鍊錶。

p = head->next ;

while(p != head)

return head;

}int main()

; linklist head;

head = createonewaycircularlinkedlist(a,5);

reverseonewaycircularlinkedlist(head);

return 0;

}

2.不帶頭結點實現

#include #include typedef struct nodelinknode,*linklist;

void reverseonewaycircularlinkedlist(linklist head)

q = p->next;

q->next = head;

head = q;

p->next = head;

p =head;

while(p->next != head)

printf("final%d ",p->data);

}linklist createonewaycircularlinkedlist(int a, int n)//尾插法生成不帶頭結點的單迴圈鍊錶

} p->data = a[i];//給最後那個生成的節點賦值

p->next = head;//非常重要。否則,頭指標沒有前驅,構不成單迴圈鍊錶。

p = head ;

while(p->next != head)

printf("ininal%d ",p->data);

return head;

}int main()

; linklist head;

head = createonewaycircularlinkedlist(a,5);

reverseonewaycircularlinkedlist(head);

return 0;

}

c語言單向鍊錶逆轉實現方法

自己理解的思路如下所示 從第二個節點開始,先記錄下乙個節點,把第二個節點移到頭節點之前,頭節點變為移動的這個節點 之前記錄的節點變為接下來要移動的節點 用for迴圈重複 最後把原來頭節點變成尾節點 next指向null 返回鍊錶 的頭節點 c語言實現 如下 struct stu reserve st...

C 單向鍊錶就地逆轉

給定乙個單鏈表l,設計函式reverse將l就地逆轉。即不需要申請新的節點,將第乙個節點轉換為最後乙個結點,第二個節點轉換為倒數第二個結點,以此類推。迴圈處理整個鍊錶。將原鍊錶的第乙個結點取出,作為逆轉後新鍊錶的第乙個結點 即新鍊錶的煉表頭 同時原鍊錶的第二個結點更新為原鍊錶的煉表頭。之後不斷取出原...

C 單向迴圈鍊錶

pragma once include using namespace std template class t class singlecircularlinklist template class t class node friend ostream operator ostream os,n...