前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据结构c语言代码实现单链表

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

作者头像
洁洁
发布2023-10-10 12:53:24
2060
发布2023-10-10 12:53:24
举报
文章被收录于专栏:小洁叫你mysql

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

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

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

   1.    声明头文件,结构体

代码语言:javascript
复制
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
typedef struct Node
{
	int data;
	struct Node* next;
}Node;

 2.       初始化链表

代码语言:javascript
复制
Node* initList()
{
	Node* list = (Node*)malloc(sizeof(Node));
	assert(list);            //assert作用:如果开辟空间失败,直接报错
	list->data = 0;        //以头结点的数据域来作为元素个数
	list->next = NULL;      
	return list;
}

3.      头插法添加

代码语言:javascript
复制
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.      尾插法添加

代码语言:javascript
复制
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.       随便一位置删除元素

代码语言:javascript
复制
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.       打印链表

代码语言:javascript
复制
void printList(Node* list)
{
	list = list->next;							//跳过头结点
	while (list)
	{
		printf("%d->", list->data);
		list = list->next;
	}
	printf("NULL\n");
}

7.        主函数

代码语言:javascript
复制
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;
}

如有错误,欢迎大家批评改正。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-09-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  •    1.    声明头文件,结构体
  •  2.       初始化链表
  • 3.      头插法添加
  • 4.      尾插法添加
  • 5.       随便一位置删除元素
  • 6.       打印链表
  • 7.        主函数
相关产品与服务
腾讯云服务器利旧
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档