首页 > 代码库 > C语言链表操作
C语言链表操作
v2版为非健全版本,很明显不能再最前端插入。
int sll_insert_v2(Node *current, int value) { Node *prev; Node *newNode; while (current != NULL && current->value >= value) { prev = current; current = current->next; } newNode = malloc(sizeof(Node)); if (newNode == NULL) { return FALSE; } newNode->value = value; if (prev == NULL) { newNode->next = current->next; current->next = newNode; } else { newNode->next = current; prev->next = newNode; } return TRUE; }
v3版本实现了插入功能,但是很明显就是,其实所有的插入都是:
新节点链向当前节点的下一 节点
当前节点链向新节点
所以有了第三版本我们需要的就是当前节点 和 指向当前节点link 的一个指针
int sll_insert_v3(Node **rootp, int value) { Node *newNode; Node *current; Node *prev; current = *rootp; while (current != NULL && current->value >= value) { prev = current; current= current->next; } newNode = malloc(sizeof(Node)); newNode->value = value; newNode->next = current; if (prev == NULL) { *rootp = newNode; } else { prev->next = newNode; } return TRUE; }
v4版本:current为当前版本, rootp为指向当前节点的link 的指针
int sll_insert_v4(Node **rootp, int value) { Node *newNode; Node *current; while ((current = *rootp) != NULL && current->value >= value) { rootp = ¤t->next; } newNode = malloc(sizeof(Node)); newNode->value = value; newNode->next = current->next; *rootp = newNode; return TRUE; }
C语言链表操作
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。