linklist----reverse

约定不等于承诺〃 2022-08-13 18:48 205阅读 0赞
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define N 10
  4. #define M 3
  5. typedef struct node{
  6. int n;
  7. struct node *next;
  8. }node_t;
  9. node_t *reverse(node_t *head)
  10. {
  11. node_t *pre, *cur, *next;
  12. if(!head || !(head->next))
  13. return head;
  14. pre = head;
  15. cur = head->next;
  16. while(cur){
  17. next = cur->next;
  18. cur->next = pre;
  19. pre = cur;
  20. cur = next;
  21. }
  22. head->next = NULL;
  23. return pre;
  24. }
  25. void disp(node_t *head)
  26. {
  27. node_t *cur;
  28. for(cur = head; cur; cur = cur->next){
  29. printf("%d\n", cur->n);
  30. }
  31. }
  32. int main(void)
  33. {
  34. int i, remain = N, step = 1;
  35. node_t *range1, *range2, *newp, *pre, *cur, *head, *tail;
  36. for(i = 0; i < N; i++){
  37. newp = malloc(sizeof(node_t));
  38. if(!newp){
  39. perror("malloc fail!\n");
  40. return 0;
  41. }
  42. newp->n = i + 1;
  43. newp->next = NULL;
  44. if(i == 0){
  45. head = newp;
  46. }else{
  47. tail->next = newp;
  48. }
  49. tail = newp;
  50. }
  51. //tail->next = head;
  52. range1 = range2 = head;
  53. while(1){
  54. range1 = range1->next;
  55. range2 = range2->next->next;
  56. if(!range1 || !range2){
  57. printf("no ring!\n");
  58. return 0;
  59. }
  60. if(range1 == range2){
  61. printf("ring!\n");
  62. return 0;
  63. }
  64. }
  65. return 0;
  66. }

发表评论

表情:
评论列表 (有 0 条评论,205人围观)

还没有评论,来说两句吧...

相关阅读