首页 > 代码库 > 链表操作时巧用指针的指针
链表操作时巧用指针的指针
比如在插入有序链表的过程中,一般情况下要使用俩指针来遍历,而后还要判断是否在第一个位置插入;利用指针的指针后不需要另外考虑这种特殊情况。
代码:
#include <stdio.h> #include <stdlib.h> struct node{ int data; struct node *next; } *head; //sorted link-list void insert(struct node *new_node){ struct node *cur = head, *pre = NULL; while(cur != NULL && cur->data < new_node->data){ pre = cur; cur = cur->next; } new_node->next = cur; if(pre == NULL) head = new_node; else pre->next = new_node; } //use pointer to pointer can make things easier void insert2(struct node *new_node){ struct node **linkp = &head; while(*linkp !=NULL && (*linkp)->data < new_node->data){ linkp = &(*linkp)->next; } new_node->next = *linkp; *linkp = new_node; } void show(){ struct node *p = head; while(p){ printf("%d , ", p->data); p = p->next; } } int main(){ int i; struct node ns[] = { {80, NULL}, {8, NULL}, {1, NULL}, {10, NULL}, }; for(i = 0; i < 4; i++){ insert2(&ns[i]); } show(); return 0; }
下一步看hlist中相应的这种思想。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。