作为最常用的数据结构之一,链表被广泛应用在各个方面,下至操作系统底层的驱动程序上至各种应用软件,
都处处可以看到链表的身影,皆因其操作的简便与应用的高效性。总结个人目前所学,链表的创建方式主要有
这个方法应该是最常见的方法,简单明了,但其缺憾是每次插入时都要进行比较,并且每次都要改变tail的值。
方法二:
这个方法需要稍微推敲一下,tail在这里起到了一个中转的作用,实现了高效的数据插入。
方法三:
这个方法有点取巧,但不失其学习性,最后list的value为最后一个结点的地址,而next则指向第一个具有意义的
value的结点。
都处处可以看到链表的身影,皆因其操作的简便与应用的高效性。总结个人目前所学,链表的创建方式主要有
以下几种方法:
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的结点。
本文详细介绍了链表创建的三种有效方法,包括其步骤和应用场景,帮助理解数据结构中的链表概念。
1万+

被折叠的 条评论
为什么被折叠?



