记录编写单链表的基本操作
#define Node_Count 5 //建立一个5个人的信息 struct P_Node { int index; struct P_Node* pNext; }P_Node; //(1)有n个珠子串起来 (2)来一颗珠子,串一颗,使用的迭代法 //(3)复习一下集合论和二元关系就非常好理解,这个链表是有序的,有偏序关系。 // 二元关系的中的传递性 //(4)出现指针兼容性问题,使用sizeof判断类型是否一致,64位指针是8个字节,指针类型不一致, // 可以使用struct P_Node 不使用typedef试试 //(5)free不会把物理空间的指针变量置为空 //(6)复习一下迭代和递归的使用 struct P_Node* FirstNode = (struct P_Node*)malloc(sizeof(struct P_Node)); struct P_Node* index_node = NULL; FirstNode->pNext = NULL; index_node = FirstNode; for (i = 0; i < Node_Count; i++) { struct P_Node* tmpPoint = (struct P_Node*)malloc(sizeof(struct P_Node)); index_node->pNext = (struct P_Node*)tmpPoint; DPINFO(("打印出 index_node->pNext 大小%d\n", sizeof(index_node->pNext))); DPINFO(("打印出 tmpPoint 大小%d\n", sizeof(tmpPoint))); tmpPoint->index = i+100; tmpPoint->pNext = NULL; index_node = tmpPoint; } //打印出来 index_node = FirstNode; for (i = 0; i < Node_Count+1; i++) { DPINFO(("打印出结点的数据%d\n",index_node->index)); index_node = index_node->pNext; } DPINFO(("打印结点finish\n")); index_node = FirstNode; while (index_node->pNext != NULL) { free(index_node); index_node = index_node->pNext; } DPINFO(("打印出index_node point data is%p\n", index_node->pNext)); //free(index_node); DPINFO(("free之后这个index_node point data is %p\n", index_node->pNext));
一勤天下无难事。