多目标遗传算法 ------ NSGA-II (部分源码解析)辅助变量 双链表操作 list.c
1 /* A custom doubly linked list implemenation */ 2 3 # include <stdio.h> 4 # include <stdlib.h> 5 # include <math.h> 6 7 # include "global.h" 8 # include "rand.h" 9 10 /* Insert an element X into the list at location specified by NODE */ 11 void insert (list *node, int x) 12 { 13 list *temp; 14 if (node==NULL) 15 { 16 printf("\n Error!! asked to enter after a NULL pointer, hence exiting \n"); 17 exit(1); 18 } 19 temp = (list *)malloc(sizeof(list)); 20 temp->index = x; 21 temp->child = node->child; 22 temp->parent = node; 23 if (node->child != NULL) 24 { 25 node->child->parent = temp; 26 } 27 node->child = temp; 28 return; 29 } 30 31 /* Delete the node NODE from the list */ 32 list* del (list *node) 33 { 34 list *temp; 35 if (node==NULL) 36 { 37 printf("\n Error!! asked to delete a NULL pointer, hence exiting \n"); 38 exit(1); 39 } 40 temp = node->parent; 41 temp->child = node->child; 42 if (temp->child!=NULL) 43 { 44 temp->child->parent = temp; 45 } 46 free (node); 47 return (temp); 48 }
typedef struct lists { int index; struct lists *parent; struct lists *child; } list;
list 结构体中有两个指针,可构成双向链表,数值空间存放 索引序号 。
insert 函数
申请一块新的内存空间,放在在 list 指针 指向的空间之后。
del 函数
将 list 指向 的个体空间释放。
以上两个操作在插入,删除操作后都有修改指针操作,保证原有链表 的 上下链接正常。
本博客是博主个人学习时的一些记录,不保证是为原创,个别文章加入了转载的源地址,还有个别文章是汇总网上多份资料所成,在这之中也必有疏漏未加标注处,如有侵权请与博主联系。
如果未特殊标注则为原创,遵循 CC 4.0 BY-SA 版权协议。
posted on 2017-01-08 16:34 Angry_Panda 阅读(459) 评论(0) 编辑 收藏 举报