单链表的基本操作(增加,查询,删除,修改)-- C 语言

版权声明:本文为博主原创文章,若转载请注明出处且不得删改。(如有错误请提出指正,部分文章会参考其他文章,已经表明参考出处,如有侵权请联系删除) https://blog.csdn.net/qq_34902437/article/details/84490045

本博文只是本人学习单链表的代码留存,不是教程,仅作参考

#include <stdio.h>
#include <stdlib.h>


typedef struct Link
{
	// 数据域 
	int data;
	// 指针域,指向下一个相同类型的结点 
	struct Link *next;
}nodeLink;
// *Link 是头指针的哇 

// 初始化
void initLink(nodeLink *L)
{
	L = (nodeLink *)malloc(sizeof(nodeLink));
	if(!L)
	{
		printf("创建内存空间失败\n");
		exit(0);
	}
	
	printf("创建成功\n");
} 

//创建赋初值链表
void createLink(nodeLink *L)
{
	nodeLink *temp = (nodeLink *)malloc(sizeof(nodeLink)); // 首元节点初始化 
	
	for(int i=1;i<5;i++)
	{
		L->data = i;
		L->next = NULL;
		temp->next = L;
		temp = temp->next;
		L= (nodeLink *)malloc(sizeof(nodeLink));
	}
	
	printf("初始化成功\n"); 
	
}

// 展示
void display(nodeLink *L)
{
	nodeLink *temp = L;
	while(temp)  // 不是 temp->next,而是 temp 本身不为空 
	{
		printf("%d,",temp->data);
		temp = temp->next;
	}
	
	printf("\n");
 } 
 
// 查询
// loc 是要查找的元素 
void  check(nodeLink *L,int loc)
{	
	int i=0;
	
	while(L)
	{
		if(i == loc)
		{
			printf("要查找的元素:%d\n",L->data);
		}
		L=L->next;
		i++;
	 } 
}

// 插入
// elem 是你要插入的值 ,loc 是要插入的位置  
void insertLink(nodeLink *L,int elem,int loc)
{
	int i=0; 
	nodeLink *p;
	p = (nodeLink *)malloc(sizeof(nodeLink));  // 一个新的节点 
	
	while(L->next)
	{
		if(i == loc)
		{
			p->next = L->next;
			L->next = p;
			p->data = elem;
			printf("插入成功!\n");
			break;
		}
		else
		{
			L = L->next;
			i++;
		}
			
	}	
} 

// 删除
// loc 是要删除的位置  
void deleteElem(nodeLink *L,int loc)
{
	int i=0; 
	
	while(L->next)
	{
		if(i == loc)
		{
			L->next = L->next->next;
			printf("删除成功!\n");
			break;
		}
		else
		{
			L = L->next;
			i++;
		}
			
	}	
}

// 修改
// elem 是要修改的值,loc 是修改值的位置
void update(nodeLink *L,int elem,int loc)
{	
	int i=0;
	while(L->next)
	{
		if(i == loc)
		{
			L->data = elem;
			printf("修改成功!\n");
			break;
		}
		else
		{
			L = L->next;
			i++;
		}
			
	}	
}  
 
main()
{
	nodeLink L;
	initLink(&L);
	createLink(&L);
	display(&L);
	check(&L,2);
	insertLink(&L,200,2);
	display(&L);
	deleteElem(&L,2);
	display(&L);
	update(&L,1024,2);
	display(&L); 
} 

猜你喜欢

转载自blog.csdn.net/qq_34902437/article/details/84490045