#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//=============================================
#define true 1
#define false 0
#define bool char
#define uint8_t unsigned char
#define uint16_t unsigned short
#define uint32_t unsigned long
//============================================
typedef struct{
int data;
void *pNextNode;
} MyNode;
//链表测试:(创)增删改查
MyNode* LinkInit(int data)
{
MyNode* head_node = (MyNode*)malloc( sizeof(MyNode));
if( head_node == NULL)
{
printf("Link_Initial,Error! \n");
return NULL;
}
head_node->data = data;
head_node->pNextNode = NULL;
return head_node;
}
//追加数据到链表尾部节点数据
//返回最后一个新节点
MyNode* LinkDataAdd( MyNode* headNode ,int data )
{
MyNode* currNode = headNode;
MyNode* newNode = (MyNode*)malloc( sizeof(MyNode));
if( newNode == NULL || currNode == NULL)
{
printf("Link_Data_Add,Error! \n");
return NULL;
}
newNode->data = data;
newNode->pNextNode = NULL;
int cnt = 0;
for(;;)
{
printf("cnt=%d,data=%d.Node_Addr=%p\n",++cnt,currNode->data,currNode );
if( currNode->pNextNode == NULL )
{
currNode->pNextNode = newNode;
break;
}
else
{
currNode = currNode->pNextNode;
}
}
return newNode;
}
//删除链表头的节点数据
//返回当前的新头节点
MyNode* LinkDataDelete( MyNode* headNode )
{
if( headNode == NULL )
{
printf("Link_Data_Delete,Error! \n");
return 0;
}
MyNode* currNode = headNode->pNextNode;
free( headNode );
headNode = NULL;
return currNode;
}
void LinkDataShow( MyNode* headNode )
{
MyNode* currNode = headNode;
int cnt = 0;
for(;;)
{
if(currNode == NULL)
{
break;
}
printf("#cnt=%d,data=%d.\n",++cnt,currNode->data);
currNode = currNode->pNextNode;
}
return ;
}
void main()
{
printf("__BuildTime=[%s]____\n\n",__TIME__);
MyNode *buff_node = NULL;
MyNode *node = LinkInit(100);
buff_node = LinkDataAdd(node,200);
printf("Last_node addr = %p.\n\n",buff_node );
buff_node = LinkDataAdd(node,300);
printf("Last_node addr = %p.\n\n",buff_node );
buff_node = LinkDataAdd(node,400);
printf("Last_node addr = %p.\n\n",buff_node );
buff_node = LinkDataAdd(node,500);
printf("Last_node addr = %p.\n\n",buff_node );
LinkDataShow(node);
buff_node = LinkDataDelete(node);
printf("Head node addr = %p.\n\n",buff_node );
}
待续........