#include <stdio.h>
#include <stdlib.h>
struct list_node{
int data;
struct list_node *next;
};
//创建链表
int list_init(struct list_node *link_list)
{
link_list = (struct list_node*)malloc(sizeof(struct list_node));
link_list->data = 0;
link_list->next = NULL;
return 0;
}
//链表在给定的节点后面添加节点
struct list_node *list_insert(struct list_node *link_list, int data, int n)
{
int i;
//printf("data = %d\n", data);
//printf("n = %d\n", n);
if (link_list == NULL) {
return NULL;
}
//添加头节点
if (n == 0) {
struct list_node *link_head = (struct list_node *)malloc(sizeof(struct list_node));
link_head->data = data;
link_head->next = link_list;
//link_list = link_head;
return link_head;
}
//添加尾结点
struct list_node *link_tmp = link_list;
int count = 1;
for (i = 0; i < n; i++) {
link_tmp = link_tmp->next;
}
//添加尾结点
struct list_node *link_tail_tmp = link_tmp->next;
if (link_tail_tmp->next == NULL) {
struct list_node *link_tail = (struct list_node *)malloc(sizeof(struct list_node));
link_tail->data = data;
link_tail->next = NULL;
link_tail_tmp->next = link_tail;
return link_list;
}
//添加中间节点
struct list_node *link_middle = (struct list_node *)malloc(sizeof(struct list_node));
link_middle->data = data;
link_middle->next = link_tail_tmp;
link_tmp->next = link_middle;
return link_list;
}
//删除指定节点
int link_delete(struct list_node *link_list, int n)
{
int i;
int count = 0;
//删除头节点
if (n == 0) {
link_list = link_list->next;
return 0;
}
struct list_node *link_tmp = link_list;
for (i = 0; i < n - 1; i++) {
link_tmp = link_tmp->next;
}
// 删除尾节点
struct list_node *link_tail = link_tmp->next;
if (link_tail->next == NULL) {
link_tmp->next = NULL;
return 0;
}
//删除中间节点
struct list_node *link_middle = link_tail->next;
link_tmp->next = link_middle;
return 0;
}
int link_show(struct list_node *link_list)
{
while (link_list->next != NULL) {
printf("%d\t", link_list->data);
link_list = link_list->next;
}
printf("%d\n", link_list->data);
return 0;
}
【学习笔记】链表操作
于 2022-05-19 00:53:46 首次发布