数据结构c语言代码实现单链表

简介: 关于数据结构,单链表一定是最简单的了。那么今天让我们一起来看看如何用c语言实现单链表尼?废话不多说,直接上代码。这是分装的代码,直接合并即是全部代码。

关于数据结构,单链表一定是最简单的了。


那么今天让我们一起来看看如何用c语言实现单链表尼?废话不多说,直接上代码。


这是分装的代码,直接合并即是全部代码。


  1.     声明头文件,结构体

#include<stdio.h>

#include<stdlib.h>

#include<assert.h>

typedef struct Node

{

int data;

struct Node* next;

}Node;

2.       初始化链表

Node* initList()

{

Node* list = (Node*)malloc(sizeof(Node));

assert(list);            //assert作用:如果开辟空间失败,直接报错

list->data = 0;        //以头结点的数据域来作为元素个数

list->next = NULL;      

return list;

}

3.      头插法添加

void headInsert(Node* list,int data)

{

Node* node = (Node*)malloc(sizeof(Node));

assert(node);                       //assert作用:如果开辟空间失败,直接报错

node->data = data;

node->next = list->next;

list->next = node;

list->data++;      //表示链表长度加一

}

4.      尾插法添加

void tailInsert(Node* list,int data)

{

Node* head = list;      //保存头结点地址

Node* node = (Node*)malloc(sizeof(Node));

assert(node);                        //assert作用:如果开辟空间失败,直接报错

node->data = data;

node->next = NULL;

list=list->next;

while (list->next != NULL)

{

 list = list->next;

}

list->next = node;

head->data++;      //长度加一

}


5.       随便一位置删除元素

void delete(Node* list, int data)

{


Node* pre = list;

Node* current = list->next;      //定义前后两个指针

while (current != NULL)

{

 if (current->data == data)

 {

  pre->next = current->next;

  break;                              //删除一个,如果删重复元素去掉break即可

 }

 pre = current;

 current= current->next;

}

list->data--;                               //元素长度减一

free(current);

}


6.       打印链表

void printList(Node* list)

{

list = list->next;       //跳过头结点

while (list)

{

 printf("%d->", list->data);

 list = list->next;

}

printf("NULL\n");

}

7.        主函数

int main()

{

Node* list = initList();

headInsert(list, 1);

headInsert(list, 2);

headInsert(list, 3);

tailInsert(list, 1);

tailInsert(list, 2);

tailInsert(list, 3);

delete(list, 3);

printList(list);

                       //这是测试调用函数,可自行更改。

return 0;

}



目录
相关文章
|
2月前
|
算法 数据处理 C语言
C语言中的位运算技巧,涵盖基本概念、应用场景、实用技巧及示例代码,并讨论了位运算的性能优势及其与其他数据结构和算法的结合
本文深入解析了C语言中的位运算技巧,涵盖基本概念、应用场景、实用技巧及示例代码,并讨论了位运算的性能优势及其与其他数据结构和算法的结合,旨在帮助读者掌握这一高效的数据处理方法。
64 1
|
2月前
|
存储 安全 数据管理
C语言之考勤模拟系统平台(千行代码)
C语言之考勤模拟系统平台(千行代码)
64 4
|
1月前
|
存储 算法 程序员
C 语言递归算法:以简洁代码驾驭复杂逻辑
C语言递归算法简介:通过简洁的代码实现复杂的逻辑处理,递归函数自我调用解决分层问题,高效而优雅。适用于树形结构遍历、数学计算等领域。
|
2月前
|
存储 缓存 算法
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式,强调了合理选择数据结构的重要性,并通过案例分析展示了其在实际项目中的应用,旨在帮助读者提升编程能力。
80 5
|
2月前
|
存储 安全 物联网
C语言物联网开发之设备安全与代码可靠性隐患
物联网设备的C语言代码安全与可靠性至关重要。一是防范代码安全漏洞,包括缓冲区溢出和代码注入风险,通过使用安全函数和严格输入验证来预防。二是提高代码跨平台兼容性,利用`stdint.h`定义统一的数据类型,并通过硬件接口抽象与适配减少平台间的差异,确保程序稳定运行。
|
2月前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
74 1