黑緢灬 黑緢灬
一步一步来
关注数: 63 粉丝数: 2,911 发帖数: 12,920 关注贴吧数: 18
关于双向链表的问题 因为没有书,所以就在网上找各种双向链表的代码来看 这是我自己构建的创建双向链表的函数和节点的定义 请各位看看有没有什么错……虽然有点长 typedef struct node{ student std;//数据域 struct node* last_node;//声明指向前一个结点的指针 struct node* next_node;//声明指向后一个结点的指针 }node; //链表创建函数声明 node* creat_node(int n) { //声明表头节点指针(根) node* node_point = NULL; //声明定位指针,负责指向各个节点,创建链表用 node* node_move_point = NULL; //声明链表节点指针,用以储存数据(分支) node* node_data = NULL; //为头节点分配内存 node_point = (node*)malloc(sizeof(node)); //防错处理,如果分配内存失败,则退出程序 if(node_point == NULL) { printf("内存分配失败!\n"); exit(0); } //初始化节点的指向上一个节点的指针和指向下一个节点的指针 node_point.last_node = NULL; node_point.next_node = NULL; //使定位指针指向头节点,即表头(根) node_move_point = node_point; //设置循环,开始构建链表 for (int i = 0;i < n;i++) { //分配内存,并进行防错处理 if((node_data=(node*)malloc(sizeof(node)))==NULL) { printf("内存分配失败!\n"); exit(0); } //使定位指针中的指向下一个节点的指针指向新节点【不知道有什么作用,定义有没有定义错】 node_move_point.next_node = node_data; ************************************************************************** //数据输入段,请无视 ************************************************************************** //定义该节点中的指向上一个节点的指针为定位指针 node_data.last_node = node_move_point; //初始化指向下一个节点的指针 node_data.next_node = NULL; //将定位指针指向已经完成的最后一个节点,即表尾(最末分支) node_move_point = node_data; } //结束循环 //定义未明 node_point.last_node = node_data; //定义未明 node_move_point.next_node = node_point; return(node_point); } 关键函数代码就这样,注释为定义未明的那部分不知道有什么用,请各位帮忙解答 还有这里 //使定位指针中的指向下一个节点的指针指向新节点【不知道有什么作用,定义有没有定义错】 node_move_point.next_node = node_data; 这一段也不知道有什么用,为什么要这样定义。
1 下一页