linklist.c
//按值进行修改
int list_zg_value(LinkList *L,datatype e,datatype new_e)
{
//判断逻辑
if(NULL==L || list_empty(L))
{
printf("查找失败\n");
return 0;
}
//定义遍历指针从第一个节点出发
LinkList *q = L->next;
while(q!=NULL)
{
if(q->data == e) //将要查找的数据跟链表中元素比较
{
q->data=new_e;
}
q = q->next;
}
printf("查找失败\n");
return -1;
//如果没找到,返回空
}
//链表逆序
void list_reverse(LinkList *L)
{
LinkList *q;
LinkList *p=L->next;
//让头结点单独出来
L->next=NULL;
while(p!=NULL)
{
q=p;
p=p->next;
//使用头插法
q->next=L->next;
L->next=q;
}
}
main.c
#include"linklist.h"
#include <stdio.h>
int main(int argc, const char *argv[])
{
LinkList *L=list_create();
if(NULL==L)
{
return -1;
}
list_insert_head(L,'q');
list_insert_head(L,'w');
list_insert_head(L,'e');
list_insert_head(L,'r');
list_insert_head(L,'a');
list_insert_head(L,'b');
list_insert_head(L,'c');
list_show(L);
list_insert_pos(L,2,'6');
list_show(L);
list_delite_head(L);
list_show(L);
list_delite_tail(L);
list_show(L);
list_delite_pos(L,2);
list_show(L);
int ret =list_search_value(L,'q');
if(ret<=0)
{
printf("查找失败\n");
}else{
printf("所要查找数据在第%d个结点上\n",ret);
}
list_zg_value(L,'a','2');
list_show(L);
list_reverse(L);
list_show(L);
return 0;
}
执行结果