11.单向链表任意元素查找
//任意元素查找
217
218 linklist search_element(linklist head,datatype element)
219 {
220 if(head==NULL)
221 return;
222 linklist s = head;
223
224 int i=1;
225 while(s->data!=element)
226 {
227 s=s->next;
228 i++;
229 }
230 printf("元素的位置是%d",i);
231 return head;
232 }
![](https://i-blog.csdnimg.cn/blog_migrate/d3901bc9814c2844f466a8618992df58.png)
12.单向链表任意元素修改
//任意元素修改
234 linklist xiugai_element(linklist head,datatype element,datatype new)
235 {
236 if(head==NULL)
237 return head;
238
239 linklist s=head;
240 int i=1;
241
242 while(s->data!=element)
243 {
244 s=s->next;
245 i++;
246 }
247 s->data=new;
248 return head;
249 }
![](https://i-blog.csdnimg.cn/blog_migrate/d3a1bf52558e3f1945d8cc55e3b01020.png)
13.单向链表任意元素删除
//任意元素删除
251 linklist delete_element(linklist head, datatype element)
252 {
253 if(head=NULL)
254 return head;
255 linklist p =head;
256 linklist del =p->next;
257 while(p->next->data!=element)
258 {
259 p=p->next;
260
261 }
263 // if(del == head)
264 // {
265 // head=delete_head(head);
266 // return head;
267 //}
268 p->next=del->next;
269 free(del);
270 del=NULL;
271 return head;
272
273 }
274
14.单向链表逆置(面试)
275 linklist nizhi(linklist head)
276 {
277 linklist p=head;
278 if(head==NULL)
279 return head;
280 if(head->next==NULL)
281 return head;
282 p=head->next;
283 head->next=NULL;
284 while(p!=NULL)
285 {
286 linklist t =p;
287 p=p->next;
288 t->next=head;
289 head=t;
290 }
291 return head;
292 }
![](https://i-blog.csdnimg.cn/blog_migrate/57bd6ef33e687b963563a2aa733799a6.png)
15.单向链表查找倒数第n个节点(面试)
293 //倒数第n个节点
294 //
295 linklist daoshu(linklist head,datatype n)
296 {
297 if(head==NULL)
298 return head;
299 if(n<1|n>length(head))
300 {
301 printf("范围错误");
302 return;
303 }
304 int i;
305 linklist p=head;
306 linklist q=head;
307 for(i=0;i<n;i++)
308 {
309 p=p->next;
310 }
311 while(p!=NULL)
312 {
313 p=p->next;
314 q=q->next;
315 }
316 printf("倒数第%d个元素是%d\n",n,q->data);
317 return head;
318 }
![](https://i-blog.csdnimg.cn/blog_migrate/5a009bf3164dc72d61e9e7d336a90ddb.png)
16.单向链表排序
linklist bubble(linklist head)
321 {
322 int i,j;
323 int t;
324 linklist p =head;
325 for(i=1;i<length(head);i++)
326 {
327 p=head;
328 for(j=0;j<length(head)-i;j++)
329 {
330
331 if(p->data>p->next->data)
332 {
333 t=p->data;
334 p->data=p->next->data;
335 p->next->data=t;
336
337 }
338 p=p->next;
339 }
340 }
341 return head;
342 }
![](https://i-blog.csdnimg.cn/blog_migrate/b9067abc7d6ce072bb957c43f57866ee.png)
17.单向链表释放内存
void free_head(linklist head)
345 {
346 linklist p=head;
347 int i;
348 if(head==NULL)
349 return;
350 for(i=0;i<length(head);i++)
351 {
352 head=delete_head(head);
353 p=p->next;
354 head=p;
355 }
356 head=NULL;
357 }
![](https://i-blog.csdnimg.cn/blog_migrate/4d86876f1cb114555a9620f96b464028.png)