zoukankan      html  css  js  c++  java
  • 求链表中间结点

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 /*
     4 查找链表中间的结点。
     5 思路1:求长度:中间结点 = len/2
     6 思路2:定义两个指针p1,p2指向头结点,p1走一步,p2走两步,当p2指向尾结点的下一个结点的时候,p1指向中间结点。
     7        疑问:比如链表有5个结点,那么第3个是中间结点毫无疑问,但是如果6个结点,那么第3个算中间结点,还是第4个算中间结点呢?
     8 */
     9 typedef struct node
    10  {
    11      int data;
    12       struct node * next;
    13  }NODE;
    14  NODE * createList()
    15 {
    16      NODE * head = (NODE *)malloc(sizeof(NODE));
    17      head->next = NULL;
    18  
    19      return head;
    20  }
    21  void insertNode(NODE *head,int insertData)
    22  {
    23      NODE * sur = (NODE *)malloc(sizeof(NODE));
    24      sur->data = insertData;
    25 
    26      sur->next = head->next;
    27      head->next = sur;
    28  
    29  }
    30  void traverList(NODE *head)
    31  {
    32      int i = 1;
    33      head = head->next;
    34      while(head)
    35      {
    36          printf("第%d结点 = %d
    ",i,head->data);
    37         head = head->next;
    38          i++;
    39     }
    40  }
    41  NODE *middleList(NODE *head)
    42  {
    43      NODE *p1,*p2;
    44      p1 = p2 = head;
    45      while(p2)
    46      {
    47         p1 = p1->next;
    48         p2 = p2->next;
    49         if(p2 !=NULL)
    50             p2 = p2->next;
    51 
    52      }
    53      return p1;
    54  }
    55  int main(void)
    56  {
    57      NODE *head = createList();
    58      for(int i = 0;i<5;i++)
    59          insertNode(head,rand()%100);
    60      traverList(head);
    61      NODE * p1 = middleList(head);
    62      printf("中间结点数据 = %d
    ",p1->data);
    63      return 0;
    64  }
  • 相关阅读:
    相邻相邻问题
    修改sqlserver2008数据库的排序规则 (转)
    备份删除
    SQL Server 2005系统数据库master重建、修复(转)
    SQL SERVER 2008 重建损坏的master (转)
    深入理解JavaScript作用域和作用域链
    js词法分析
    利用 Console 来学习、调试JavaScript
    expression解决IE6下固定定位的兼容
    浏览器事件的思考
  • 原文地址:https://www.cnblogs.com/wangchaomahan/p/9734639.html
Copyright © 2011-2022 走看看