博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c语言-单链表(二)
阅读量:5223 次
发布时间:2019-06-14

本文共 1855 字,大约阅读时间需要 6 分钟。

继续复习链表知识点,本章包含单链表的增加,删除,判断是否为空,和链表长度,以及链表的排序 几个知识点

1.链表的判断是否为空

//1.判断链表是否为空bool isempty_list(PNODE pHead) {	return pHead->pNext == NULL;}

2. 计算链表的长度

//2.链表长度int length_list(PNODE pHead) {	PNODE pFirst = pHead->pNext;//获取头结点	int num = 0;	while (pFirst != NULL)	{		num++;		pFirst = pFirst->pNext;	}	return num;}

3. 在制定位置增加节点

//指索引位置插入节点bool insert_list(PNODE pHead, int pos, int data) {	PNODE p = pHead;//头结点	int i = 0;	while (p != NULL&&i <= pos)	{		p = p->pNext;		i++;	}	//pos 是索引位置,循环i不能>pos+1	if (p == NULL || i > (pos + 1))	{		return false;	}	PNODE pNew = (PNODE)malloc(sizeof(PNODE));	if (NULL == pNew)	{		printf("内存分配失败");		exit(-1);	}	pNew->data = data;	pNew->pNext = p->pNext;	int pVal = p->data;	p->pNext = pNew;	return true;}

4. 在指定位置删除节点

bool delete_list(PNODE pHead, int pos) {	PNODE p = pHead->pNext;	int i = 0;	//这样循环为了获取pos 前面一个节点	while (NULL != p&&i < pos - 1)	{		p = p->pNext;		i++;	}	if (NULL == p || i > pos - 1)	{		return false;	}	PNODE q = p->pNext;	p->pNext = p->pNext->pNext;	free(q);	q = NULL;	return true;}

5.节点的排序

//排序算法void sort_list(PNODE pHead) {	int len = length_list(pHead);	PNODE p, q;	int i, j, temp;	for (i = 0, p = pHead->pNext; i < len - 1; i++, p = p->pNext)	{		for (j = i + 1, q = p->pNext; j < len; j++, q = q->pNext)		{			if (p->data > q->data)			{				temp = p->data;				p->data = q->data;				q->data = temp;			}		}	}	return;}

6. 测试代码

void main(void) {	PNODE pHead = create_list();	if (isempty_list(pHead)) {		printf("链表为空\n");	}	else {		printf("链表不为空\n");	}	bool is_insert=insert_list(pHead, 2, 100);	if (is_insert)	{		printf("链表在索引2出插入100 成功\n");		show_list(pHead);	}	else {		printf("链表在索引2出插入100 失败\n");	}	printf("删除节点索引:1\n");	bool is_del=delete_list(pHead, 1);	if (is_del)	{		printf("删除节点索引:1 成功\n");		show_list(pHead);	}	else {		printf("删除节点索引:1 失败\n");	}}

  

 

转载于:https://www.cnblogs.com/clc2008/p/6827922.html

你可能感兴趣的文章
训练记录
查看>>
IList和DataSet性能差别 转自 http://blog.csdn.net/ilovemsdn/article/details/2954335
查看>>
Hive教程(1)
查看>>
Java集合框架学习
查看>>
第16周总结
查看>>
C#编程时应注意的性能处理
查看>>
Fragment
查看>>
比较安全的获取站点更目录
查看>>
苹果开发者账号那些事儿(二)
查看>>
5.0以上机器XPOSED框架安装流程
查看>>
((完美有效))安卓神器XPOSED框架不用root安装指南
查看>>
Java删除properties配置文件中指定键值的代码
查看>>
python使用chardet判断字符串编码,超简单的代码
查看>>
红米手机使用应用沙盒动态修改硬件信息
查看>>
vivo手机使用应用沙盒一键修改屏幕数据
查看>>
[NOIP2012TG] 洛谷 P1080 国王游戏
查看>>
7、字符串拼接避免值类型装箱!
查看>>
js 极简获取表单 元素 !
查看>>
追踪方法上的特性!
查看>>
使用C#交互快速生成代码!
查看>>