C语言--单链表的基本操作

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yu1368072332/article/details/82858506
#include <stdio.h>
#include <stdlib.h>

typedef struct Node
{
	int value;
	struct Node *next;
} lsNode;


lsNode *InitLink(int count)
{
	lsNode *head = (lsNode*)malloc(sizeof(lsNode));  //头结点
	lsNode *temp = head;
	for (int i = 0; i < count; i++)
	{
		lsNode *a = (lsNode*)malloc(sizeof(lsNode));
		a->value = i;
		a->next = NULL;
		temp->next = a;
		temp = temp->next;
	}
	return head;
}


void AddLink(lsNode *head, int num)
{
	lsNode *temp = head;
	while (temp->next != NULL)
	{
		temp = temp->next;
	}
	lsNode * ins = (lsNode *)malloc(sizeof(lsNode));
	ins->next = NULL;
	ins->value = num;
	temp->next = ins;
	temp = ins;
}


void InsertLink(lsNode *head, int index, int value)
{
	lsNode *temp = head;
	int pos = 1;
	while (temp != NULL&&pos < index)
	{
		temp = temp->next;
		pos++;
	}
	lsNode *nodeNew = (lsNode *)malloc(sizeof(lsNode));
	nodeNew->value = value;
	nodeNew->next = temp->next;
	temp->next = nodeNew;
}

void ChangeLinkValue(lsNode *head, int index, int value)
{
	lsNode *temp = head;
	for (int i = 0; i <= index; i++)
	{
		temp = temp->next;
	}
	temp->value = value;
}


int GetIndexValue(lsNode *head, int index)
{
	lsNode *temp = head;
	int value = 0;
	for (int i = 0; i <= index; i++)
	{
		temp = temp->next;
	}
	value = temp->value;	
	return value;
}


void DelIndexLink(lsNode *head, int index)
{
	lsNode *temp = head;
	for (int i = 0; i < index; i++)
	{
		temp = temp->next;
	}
	lsNode *del = temp->next;
	temp->next = del->next;
	free(del);
	del = NULL;
}

void PrintLink(lsNode *head)
{
	lsNode *temp = head;
	while (temp->next != NULL)
	{
		temp = temp->next;
		printf("节点的value:%d\n", temp->value);
	}
}

int main()
{
	//创建一个新的链表
	lsNode *lsNode_0 = InitLink(5);
	//添加数据到最后
	AddLink(lsNode_0, 10);
	//插入数据到指定位置
	InsertLink(lsNode_0, 1, 15);
	//修改指定位置的数据
	ChangeLinkValue(lsNode_0, 2, 30);
	//获取指定数据
	GetIndexValue(lsNode_0, 0);
	//删除指定数据
	DelIndexLink(lsNode_0, 2);
	//遍历当前链表打印数据
	PrintLink(lsNode_0);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/yu1368072332/article/details/82858506