- 单链表的简单操作
- 代码结构
- 一、单链表数据结构
- 二、创建节点
- 三、删除节点
- 四、插入节点
- 五、打印节点
- 六、main函数
- 七、运行结果
- 总结
typedef struct tag_SingleNodelink SingleNodelink;
struct tag_SingleNodelink
{
int data;
SingleNodelink* next;
};
二、创建节点
SingleNodelink *CreateNode(int data)
{
size_t node_size = sizeof(SingleNodelink);
SingleNodelink *new = NULL;
if(NULL == (new = malloc(sizeof(node_size))))
{
return NULL;
}
memset(new, ' ', sizeof(node_size));
new->data = data;
new->next = NULL;
return new;
}
三、删除节点
int DeleteNode(SingleNodelink *head, SingleNodelink *node)
{
SingleNodelink *temp = NULL;
if(NULL == head || NULL == node)
{
printf("%s-%d: 33[31m Delete error 33[0mn", __FILE__, __LINE__);
return -1;
}
if(node == head)
{
free(node);
head = head->next;
node = NULL;
return 0;
}
temp = head;
while(temp->next)
{
if(temp->next == node)
{
temp->next = node->next;
node->next = NULL;
free(node);
node = NULL;
return 0;
}
temp = temp->next;
}
return -1;
}
四、插入节点
int InsertNode(SingleNodelink **head, SingleNodelink *new)
{
if(NULL == new)
{
printf("%s-%d: 33[31m Insert error 33[0mn", __FILE__, __LINE__);
return -1;
}
if(NULL == head)
{
*head = new;
}
else
{
new->next = *head;
*head = new;
}
printf("%s-%d: 33[31m Insert successfully 33[0mn", __FILE__, __LINE__);
return 0;
}
五、打印节点
int Travellink(SingleNodelink *head)
{
SingleNodelink *temp = NULL;
if(NULL == head)
{
printf("%s-%d: 33[31m link is NULL 33[0mn", __FILE__, __LINE__);
return -1;
}
temp = head;
while(NULL != temp)
{
printf("%s-%d: 33[31m %d 33[0mn", __FILE__, __LINE__, temp->data);
temp = temp->next;
}
printf("n-----------------------------nn");
return 0;
}
六、main函数
int main(int argc, char const *argv[])
{
int i = 0;
SingleNodelink *new = NULL;
SingleNodelink *head = NULL;
for(i = 0; i < 10; i++)
{
new = CreateNode(i);
InsertNode(&head, new);
}
Travellink(head);
SingleNodelink *node = head->next;
DeleteNode(head, node);
Travellink(head);
new = CreateNode(8);
InsertNode(&head, new);
Travellink(head);
return 0;
}
七、运行结果
单链表比较简单,具体的使用还是数据结构中的指针运用。



