链表创建的三种方法

本文详细介绍了链表创建的三种有效方法,包括其步骤和应用场景,帮助理解数据结构中的链表概念。
作为最常用的数据结构之一,链表被广泛应用在各个方面,下至操作系统底层的驱动程序上至各种应用软件,
都处处可以看到链表的身影,皆因其操作的简便与应用的高效性。总结个人目前所学,链表的创建方式主要有

以下几种方法:


方法一:

struct link_node {
   struct link_node *next;
   int value;
};


  struct link_node *list = NULL;
  struct link_node *tail = NULL;
  struct link_node *node;
  
  for ( i = 0; i < n; i++ ) {
      node = (struct link_node *)malloc(sizeof(struct link_node));
      node->next = NULL;
      node->value = ??;
      if ( tail != NULL ) {
         tail->next = node;
         tail = node;
      }
      else {
          list = tail = node;
      }
  }

这个方法应该是最常见的方法,简单明了,但其缺憾是每次插入时都要进行比较,并且每次都要改变tail的值。

方法二:

struct link_node *list = NULL;
struct link_node **tail = &list;
struct link_node *node;

for ( i = 1; i <= 5; i++ ) {
     node = (struct node *)malloc(sizeof(struct node));
     node->next = NULL;
     node->value = ??;

     *tail = node;
     tail = &(node->next);
}

这个方法需要稍微推敲一下,tail在这里起到了一个中转的作用,实现了高效的数据插入。

方法三:
struct link_node *list = (struct node *)malloc(sizeof(struct node));
list->next = NULL;
list->value = (int)list;

struct link_node *node;

for ( i = 1; i <= n; i++ ) {
    node = (struct node *)malloc(sizeof(struct node));
    node->next = NULL;
    node->value = ??;

    (struct link_node *)(list->value)->next = node;
    list->value = (int)node;
}

这个方法有点取巧,但不失其学习性,最后list的value为最后一个结点的地址,而next则指向第一个具有意义的
value的结点。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值