DAY18 链表

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 }

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 }

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 }

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 }

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 }

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 }

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值