Chinaunix首页 | 论坛 | 博客
  • 博客访问: 413600
  • 博文数量: 168
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 0
  • 用 户 组: 普通用户
  • 注册时间: 2013-09-09 13:46
文章分类

全部博文(168)

文章存档

2015年(51)

2014年(30)

2013年(87)

我的朋友

分类: C/C++

2013-09-13 18:01:23

原文地址:链表逆序-me 作者:HuangLei_LEGO

点击(此处)折叠或打开

  1.  #include <stdio.h>
  2.  #include <stdlib.h>
  3.  #include <string.h>

  4.  #define LEN 2

  5.  /**
  6.  *Node data
  7.  */
  8.  typedef struct _ND
  9.  {
  10.      int no;
  11.      struct _ND * next;
  12.  }ND;

  13.  /**
  14.  * just test
  15.  */
  16.  ND * initial(void)
  17.  {
  18.      ND * head = NULL;
  19.      ND * cur = NULL;
  20.      int i;
  21.      for (i = 0; i < LEN; ++i)
  22.      {
  23.          cur = (ND *)malloc(sizeof(ND));
  24.          if (!cur)
  25.              return NULL;
  26.          memset(cur, 0, sizeof(ND));
  27.          cur->no = i;
  28.          if (!head)
  29.              cur->next = NULL;
  30.          else
  31.              cur->next = head;
  32.          head = cur;
  33.      }
  34.      return head;
  35.  }

  36.  /**
  37.  * print linkerlist
  38.  */
  39.  void trave(ND * head)
  40.  {
  41.      ND * p = head;
  42.      if (!p)
  43.          return ;
  44.      while (p)
  45.      {
  46.          printf("%d->", p->no);
  47.          p = p->next;
  48.      }
  49.      printf("NULL\n");
  50.  }

  51.  /**
  52.  * reverse linkerlist
  53.  * 将后面的结点依次往前插....
  54.  */
  55.  ND * reverse(ND * head)
  56.  {
  57.      ND * p;
  58.      ND * q;
  59.      if (NULL == head || NULL == head->next)
  60.          return head;
  61.      p = head->next;
  62.      head->next = NULL;
  63.      while (p)
  64.      {
  65.          q = p->next;
  66.          p->next = head;
  67.          head = p;
  68.          p = q;
  69.      }
  70.      return head;
  71.  }

  72.  int main(int argc, const char *argv[])
  73.  {
  74.      trave(initial());
  75.      trave(reverse(initial()));
  76.      return 0;
  77.  }

阅读(593) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~