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