笔记|C语言版单链表的建立方式

数据结构C语言第二版:单链表的建立:尾插法,前插法,任意位置插入法
文章目录

  • 单链表的建立方式
  • 一、尾插法
  • 二、前插法
    • 1.引入库
  • 总结

单链表的建立方式 尾插法: 利用尾部结点的NULL 这个核心去突破
前插法:直接暴力赋值便可

提示:以下是本篇文章正文内容,下面案例可供参考
一、尾插法 尾插法的核心:利用单链表最后一个结点指向NULL为条件,进行插入。

//尾插入法 void tail_insert(RNode* head, int x) { RNode* p = initnode(); //每次都生成一个结点 p->data = https://www.it610.com/article/x; if (head == NULL) { head->next = p; //当只有头结点的时候 } else { while (head->next != NULL) { head = head->next; //寻找最后一个结点指向NULL } head->next = p; //将生成的结点的位置赋值给最后一个结点 } }

二、前插法

//前插法 void front_insert(RNode* head, int x) { RNode* p = initnode(); //生成一个新结点 p->data = https://www.it610.com/article/x; if (head->next == NULL) { head->next = p; //如果为一个空链表就直接赋值 } else { p->next = head->next; head->next = p; /*这是把头结点指针域的值赋值新生成的结点指针域 头指针的指针在指向新生成的结点 这样就实现了前插法构建单链表 */ } }

1.引入库 代码如下(示例):
#include//调用基本输入/输出库文件 #include//调用标准库头文件,malloc函数在这个头文件中 #include//使用系统库文件,暂停一下,看到执行结果

总结

#include.h> #include.h> #includetypedef struct Node { int data; struct Node* next; }RNode; //生成一个结点 RNode* initnode() { RNode* node; node = (struct Node*)malloc(sizeof(struct Node)); node->data = https://www.it610.com/article/0; node->next = NULL; return node; }//生成一个链表 RNode* createlink() { RNode* head; head = initnode(); head->next = NULL; //生成了一个循环链表 return head; }//尾插入法 void tail_insert(RNode* head, int x) { RNode* p = initnode(); //每次都必须生成一个结点 p->data = https://www.it610.com/article/x; if (head == NULL) { head->next = p; } else { while (head->next != NULL) { head = head->next; } head->next = p; } }//前插法 void front_insert(RNode* head, int x) { RNode* p = initnode(); //生成一个新结点 p->data = https://www.it610.com/article/x; if (head->next == NULL) { head->next = p; } else { p->next = head->next; head->next = p; } }void clear(RNode *head) { head->next = NULL; }//打印函数 void display(RNode *head) { RNode* p; p = head->next; while (p != NULL) { printf("%d->", p->data); p = p->next; } printf("NULL"); }int main() { RNode* linklist; linklist = createlink(); for (int i = 2; i < 10; i++) { tail_insert(linklist, i); } display(linklist); clear(linklist); //清空单链表 printf("\n"); for (int i = 9; i > 1; i--) { front_insert(linklist, i); } display(linklist); system("pause"); return 0; }结果: 利用尾插法构建的单链表: 2->3->4->5->6->7->8->9->NULL 利用前插法构建的单链表: 2->3->4->5->6->7->8->9->NULL 介绍: 这里前插法我利用的for循环将9~2 的顺序插入到头结点之后, 目的是为了让大家更直观的看到前插的效果。

【笔记|C语言版单链表的建立方式】总结:前插法和尾插法都是单链表建立的方法,区别在于一个是在头部插进, 一个是在尾部插入,但其实基本步骤一致,只不过插入的方式不同, 比如尾插需要找指向NULL的结点,而前插法不需要。

    推荐阅读