1.創建結點
2.在鏈表末尾插入結點
3.刪除接點
4.查找某個結點
5.頭插法
6.尾插法
7.鏈表的長度
8.遍歷結點
#include <stdlib.h>
#include <stdio.h>
typedef struct _Node
{
char value;
struct _Node * next;
} Node, *PNode;
PNode header = NULL;
PNode create_node(char value)
{
PNode node = (PNode)(malloc(sizeof(Node)));
node->value = value;
node->next = NULL;
return node;
}
void push(PNode node)//在鏈表最後插入節點(投放結點)
{
PNode cur_node = header;
if (!header)//當header爲空
{
header = node;
return;
}
while (cur_node->next)//當header不爲空,找到最後一個
{
cur_node = cur_node->next;
}
cur_node->next = node; //找到and 插入
}
void remove(char value)//刪除結點
{
PNode pre_node = NULL;
PNode cur_node = header;
while (cur_node)//循環找到要刪除的元素
{
if (cur_node->value == value)//找到
{
break;
}
pre_node = cur_node;
cur_node = cur_node->next;
}
if (!cur_node)//排除找不到的情況
{
return;
}
if (!pre_node)//要刪除的結點在第一個元素
{
header = cur_node->next;
free(cur_node);
}
else//要刪除的結點在中間或者後面
{
pre_node->next = cur_node->next;
free(cur_node);
}
}
PNode find(char value)//找到某個結點
{
PNode cur_node = header;
while (cur_node)//逐個向後查找
{
if (cur_node->value == value)//找到
{
return cur_node;
}
cur_node = cur_node->next;
}
return NULL;
}
void insert(char value, PNode node)//將結點插入到找到的結點前面
{
PNode cur_node = header;
PNode pre_node = NULL;
while (cur_node)//向後查找要插入的結點
{
if (cur_node->value == value)//找到
{
break;
}
pre_node = cur_node;
cur_node = cur_node->next;
}
if (!cur_node)//沒找到 返回
{
return;
}
if (!pre_node)//@1 第一個節點
{
header = node;
node->next = cur_node;
}
else//@2 中間結點
{
pre_node->next = node;
node->next = cur_node;
}
}
void insert_head(char value, PNode node)//將結點插入到找到的結點後面
{
PNode cur_node = header;
PNode pre_node = NULL;
while (cur_node)//向後查找要插入的結點
{
if (cur_node->value == value)//找到
{
break;
}
pre_node = cur_node;
cur_node = cur_node->next;
}
if (!cur_node)//沒找到 返回
{
return;
}
if (!pre_node)//@1 第一個節點
{
header = node;
node->next = cur_node;
}
else//@2 中間結點
{
node->next = cur_node->next;
cur_node->next = node;
}
}
//鏈表長度
int length(PNode node)
{
int len = 0;
PNode cur_node = header;
while (cur_node)
{
cur_node = cur_node->next;
len++;
}
return len;
}
void traversal(void)//遍歷結點
{
PNode node = header;
while (node)
{
printf("Value: %c\n", node->value);
node = node->next;
}
}
int main(int ac, char * av[])
{
PNode node=create_node('a');
push(node);
node=create_node('v');
push(node);
node = create_node('f');
push(node);
node = create_node('r');
push(node);
node = create_node('t');
push(node);
traversal();
//remove('f');
node = create_node('m');
//insert('r', node);
//insert_head('r', node);
//traversal();
int len = length(node);
printf("%i\n", len);
return 0;
}