目录
1.结构体设置
typedef struct Link
{
int data;
struct Link *next;
}link;
2. 单向链表初始化
//单向链表初始化
link *link_init(void)
{
link *p=(link *)malloc(sizeof(link));
p->next=p;
return p;
}
3.头插
// 头插
void link_insert_head(link *head,int elem)
{
link *node=(link *)malloc(sizeof(link));
node->data=elem;
node->next=head->next;
head->next=node;
}
4.遍历链表
//遍历链表
void display(link *head)
{
link *temp=head->next;
while(temp!=head)
{
printf("%d >> ",temp->data);
temp=temp->next;
}
putchar(10);
}
5.尾插
// 尾插
void link_insert_tail(link *head,int elem)
{
link *node=(link *)malloc(sizeof(link));
node->data=elem;
link *temp=head;
while(temp->next!=head)
{
temp=temp->next;
}
node->next=head;
temp->next=node;
}
6.删除某个数据
// 删除某个数据
int link_del(link *head,int elem)
{
link *temp=head->next;
link *p=head;
while(temp!=head)
{
if(temp->data == elem)
{
break;
}
p=temp;
temp=temp->next;
}
if(temp==head)
{
return -1;
}
else
{
p->next=temp->next;
free(temp);
return 0;
}
}
7.查询某个数据的位置
// 查询某个数据的位置
int link_search(link *head,int elem) // _ 1 2 3 4 elem=1
{
int n=1;
link *temp=head->next;
while(temp!=head)
{
if(temp->data==elem)
{
return n;
}
temp=temp->next;
n++;
}
return -1;
}
8.修改某个数据为新的数据
// 修改某个数据为新的数据
void link_change(link *head,int elem,int newelem) // _ 1 2 3 4 elem=3 newelem=10
{
int add=link_search(head,elem);
if(add==-1)
{
return ;
}
int i;
link *temp=head;
for(i=0;i<add;i++)
{
temp=temp->next;
}
temp->data=newelem;
}