[关闭]
@iwktd981220 2017-09-22T07:17:45.000000Z 字数 1714 阅读 333

link_list 呵呵呵呵呵

code


作业要求:

  1. typedef struct _slist_t {
  2. int data;
  3. struct _slist_t* next;
  4. } slist_t;
  5. /*
  6. 第一个参数是要插入结点的表, 第二个是插入的数据
  7. 头插入结点, 返回新的链表头.
  8. 食用栗子:
  9. slist_t *list = NULL;
  10. list = slist_prepend (list, 1);
  11. list = slist_prepend (list, 2);
  12. */
  13. slist_t* slist_prepend (slist_t *list, int data);
  14. /*
  15. 在指定地方插入结点... 返回新的头
  16. 食用栗子:
  17. slist_t *list=NULL;
  18. list=slist_insert(list,0,1);
  19. list=slist_insert(list,0,2);
  20. list=slist_insert(list,-1,4);
  21. list=slist_insert(list,100,5);
  22. 产生 2->1->4->5
  23. 注意, 当position超过链表长度减1或者为负数时, 默认尾插入...
  24. */
  25. slist_t* slist_insert(slist_t *list, int position, int data)
  26. /* 逆置一个单链表 */ slist_t *slist_reverse(slist_t *list) //规则一样, 返回新的头 食用栗子略.

参考链接:http://www.cnblogs.com/newwy/archive/2010/10/10/1847456.html

我自己写的:

 (主程序略,因为不知道输入后干啥...):
  1. typedef struct _slist_t {
  2. int data;
  3. struct _slist_t* next;
  4. } slist_t,*slist_f;
  5. slist_f *slist_prepend (slist_t *list, int data){
  6. slist_t *new_node;
  7. slist_t *l;
  8. l = list ;
  9. new_node = (slist_t*)malloc(sizeof(slist_t));
  10. for (size_t i = 1; i < data; i++) {
  11. l = l ->next;
  12. }
  13. new_node ->next = l ->next;
  14. l ->next = new_node;
  15. return *l;
  16. }
  17. slist_f *slist_insert (slist_t *list,int sequence,int data){
  18. slist_t *lb;
  19. lb = l;
  20. slist_t *new_node;
  21. new_node = (slist_t*)malloc(sizeof(slist_t));
  22. new_node = data;
  23. if (sequence <0 || sequence > sizeof(lb)/sizeof(slist_t)) {
  24. while (lb ->next !=NULL) {
  25. lb = lb ->next;
  26. }
  27. new_node ->next = lb ->next;
  28. lb ->next = data;
  29. }
  30. else for (size_t i = 0; i < sequence; i++) {
  31. lb = lb ->next;
  32. }
  33. list ->next = lb ->next;
  34. lb ->next = list;
  35. return *l;
  36. }
  37. slist_f *slist_reverse(slist_t *list){
  38. int length = sizeof(list)/sizeof(slist_t);
  39. int a[length];
  40. slist_t *l;
  41. slist_t *new_node;
  42. slist_t *new_list;
  43. l = list;
  44. new_list = (slist_t*)malloc(sizeof(slist_t));
  45. new_list -> next = NULL;
  46. for (size_t i = 0; i < length; i++) {
  47. a[0] = l ;
  48. l = l ->next;
  49. }
  50. for (size_t j = 0,k = length-1; j < length; j++) {
  51. new_node = (slist_t*)malloc(sizeofslist_t));
  52. new_node = a[k];
  53. new_node ->next = new_list ->next;
  54. new_list ->next = new_node;
  55. }
  56. return *new_list;
  57. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注