#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;
}