版权声明:本文为博主原创文章,若转载请注明出处且不得删改。(如有错误请提出指正,部分文章会参考其他文章,已经表明参考出处,如有侵权请联系删除) 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);
}