[关闭]
@iwktd981220 2017-09-22T07:16:10.000000Z 字数 470 阅读 366

link_list 删删删删删

code


作业要求

如何优雅地从单链表中删除一个entry. 没有标准答案, 自由发挥, 用C实现, 给定function prototype
list_t delete(list_t list, list_t* entry);
这个函数告诉我们, 每次删除都会返回新的链表头, 参数是一个链表头, 一个是要删除的entry.

我的代码

(主程序略)

  1. typedef struct _list_t {
  2. int num;
  3. struct _list_t *next;
  4. }list_t,*list_f;
  5. list_f *delete(list_t *list,list_t *entry) {
  6. list_t *l;
  7. l = list;
  8. for (size_t i = 1; i < entry->num -1; i++) {
  9. l = l->next;
  10. }
  11. list_t *o,*p,*q;
  12. o = (list_t*)malloc(sizeof(list_t));
  13. *o = *l;
  14. p = (list_t*)malloc(sizeof(list_t));
  15. l = l->next;
  16. l = l ->next;
  17. *p = *l ;
  18. o ->next = p;
  19. return *l;
  20. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注