单链表基础算法(C语言)
#include<stdio.h>
#include<stdlib.h>
typedef struct LNode{
int data;
struct LNode *next;
}LinkList;
LinkList *creat(int n)
{
LinkList *head,*node,*end;
head=(LinkList*)malloc(sizeof(LinkList));
end=head;
int i;
for(i=0;i<n;i++)
{
node=(LinkList*)malloc(sizeof(LinkList));
scanf("%d",&node->data);
end->next=node;
end=node;
}
end->next=NULL;
return head;
}
void change(LinkList *L,int n)
{
int i=0;
while(i<n&&L!=NULL)
{
L=L->next;
i++;
}
if(L!=NULL)
{
puts("\n请输入要修改的值:");
scanf("%d",&L->data);
}
else
{
puts("\n节点不存在");
}
}
void delet(LinkList *L,int n)
{
LinkList *t;
int i=0;
while(i<n-1&&L!=NULL)
{
L=L->next;
i++;
}
if(L!=NULL)
{
L->next=L->next->next;
}
else
{
puts("\n节点不存在");
}
}
void insert(LinkList *L,int n)
{
LinkList *in;
int i=0;
while(i<n&&L->next!=NULL)
{
L=L->next;
i++;
}
if(L!=NULL)
{
in=(LinkList*)malloc(sizeof(LinkList));
puts("\n请输入要插入的值:");
scanf("%d",&in->data);
in->next=L->next;
L->next=in;
}
else
{
puts("\n节点不存在");
}
}
void DispList(LinkList *L)
{
while(L->next!=NULL)
{
L=L->next;
printf("%d ",L->data);
}
}
int main()
{
int a[100],n,i,h;
LinkList *L;
L = (LinkList*)malloc(sizeof(LinkList));
L->next = NULL;
scanf("%d %d",&n,&h);
L=creat(n);
change(L,h);
DispList(L);
printf("\n");
delet(L,h);
DispList(L);
insert(L,2);
DispList(L);
return 0;
}