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...