初识动态链表

什么是链表?链表是结构体变量与结构体变量链接在一起,通过结构体指针链接在一起

如何动态创建链表:动态内存申请+模块化设计

这里插入的方法是头插法

1.创建链表

如何从结构体指针变成结构体变量我们需要动态内存申请

这句代码

struct Node* headnod = (struct Node*)malloc(sizeof(struct Node));

就是把结构体指针变成结构体变量

malloc是库函数,作用是分配所需内存空间

struct Node
{
	int date;
	struct Node* next;
};

//创建链表
struct Node* list()
{
	struct Node* headnod = (struct Node*)malloc(sizeof(struct Node));
	//head就变成了结构体变量
	//变量使用前要初始化
	headnod->date=1;//一般不初始化成1
	headnod->next = NULL;
	return headnod;
}

2.创建节点

//创建节点
//和我们创建链表相比多了一个数据域其他的创建链表都差不多
struct Node* createnode(int date)
{
	struct Node* newnode = (struct Node*)malloc(sizeof(struct Node));
	newnode->date = date;
	newnode->next = NULL;
	return newnode;

3.插入节点

void insertnode(struct Node* headnod, int date)
{
	//1.创建插入节点(因为我们已经写好了一个创建节点的函数直接调用就可以了)
	struct Node* newnod = createnode(date);
	newnod->next = headnod->next;
	headnod->next = newnod;
	
}

4.删除节点

5.打印链表

写一个printlist函数打印,链表我们打印从第二个所以我们定义一个结构体指针move 指向第二个元素开始打印

先判断move指针指向的地方是不是空指针

如果不是进入循环先打印数据再让指针向后移动

//打印链表
void printlist(struct Node* headnod)
{
	//从第二个节点开始打印
	struct Node* move = headnod->next;
	while (move != NULL)
	{

		printf("%d ", move->date);
		move = move->next;
	}
	printf("\n");
}

最后在main函数里调用就可以了

int main()
{
	struct Node* list = createlist();
	insternode(list, 1);
	insternode(list, 2);
	insternode(list, 3);
	printlist(list);
	return 0;
}

删除节点这里没有讲,讲的也不是很好,欢迎大家多提提意见

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值