栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > Java

初学链表(C语言)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

初学链表(C语言)

小学期第一天学习了一点链表的知识,想通过CSDN记录一下。(有不足的地方请多多指教)

1.创建链表:

//创建链表
link* buildLink(int num)
{
	link* head = (link*)malloc(sizeof(link));
	link* temp = head;
	for (int i = 1; i <= num; i++)
	{
		link* a = (link*)malloc(sizeof(link));
		a->element = i;
		a->next = NULL;

		temp->next = a;
		temp = temp->next;
	}
	return head;
}

 2.输出链表:

//输出链表
void printLink(link* p)
{
	link* temp = p;
	while (temp->next != NULL)
	{
		temp = temp->next;		//头节点没有数据域
		printf("%d ", temp->element);
	}
	printf("n");
}

3.查询链表中元素位置:

//查询元素在链表中的位置
int selectElem(link* p, int key)
{
	link* temp = p;
	int counter = 0;
	while (temp->next)
	{
		temp = temp->next;
		counter++;
		if (temp->element == key)
		{
			return counter;		//返回元素所在位置
		}
	}
	return -1;					//没有查询到key
}

4.修改num位置的元素为element:

//修改num位置的元素为element
void amendElem(link* p, int num,int element)
{
	link* temp = p;
	for (int i = 0; i < num; i++)
	{
		temp = temp->next;
	}
	temp->element = element;
}

5.新增节点:

//新增节点
void addElem(link* p,int num, int element)
{
	link* temp = p;
	//先找到新增节点位置前一个节点
	for (int i = 1; i < num; i++)
	{
		if (!temp->next)
		{
			printf("error indexn");
			return;
		}
		temp = temp->next;
	}
	link* new_elem = (link*)malloc(sizeof(link));
	new_elem->next = temp->next;
	temp->next = new_elem;
	new_elem->element = element;
}

6.删除节点:

//删除节点
int delElem(link* p, int elem)
{
	link* temp = p;
	link* temp0 = p;
	while (temp->next)
	{
		temp0 = temp;		//temp0保存前一个节点的信息
		temp = temp->next;	//temp保存要删除节点的信息
		if (elem == temp->element)
		{
			temp0->next = temp->next;
			free(temp);
			return 1;
		}
	}
	return -1;				//没有找到elem
}

7.测试用例:

int main()
{
	link* link0 = buildLink(6);
	printLink(link0);
	delElem(link0, 4);
	printLink(link0);
	addElem(link0, 5, 100);
	amendElem(link0, 1, 10);
	printLink(link0);
	int flag = selectElem(link0, 2);
	if (flag != -1)
		printf("2 is the %d number in the link0.", flag);
	else
		printf("failing to find 2 in the link0.");		//flag == 0
	return 0;
}

8.输出结果:

转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1039252.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号