源文件:
#include <stdio.h>
#include <stdlib.h>
struct TagListNode
{
int data;
struct TagListNode *next;
};
typedef struct TagListNode ListNode;
ListNode *createList()
{
ListNode *list = (ListNode *)malloc(sizeof(ListNode));
list->data = 0;
list->next = NULL;
}
ListNode *createNode(int data)
{
ListNode *node = (ListNode *)malloc(sizeof(ListNode));
node->data = data;
node->next = NULL;
}
void delListNode(ListNode *head, ListNode *node)
{
ListNode *cur = head;
while (cur)
{
if (cur->next == node)
{
break;
}
cur = cur->next;
}
if (cur == NULL)
{
return;
}
cur->next = node->next;
free(node);
}
void addListNodeTail(ListNode *head, ListNode *node)
{
ListNode *tail = head;
while (tail->next)
{
tail = tail->next;
}
// node的next指针为空
tail->next = node;
}
int getListCount(ListNode *head)
{
int count = 0;
ListNode *node = head->next;
while (node)
{
node = node->next;
count++;
}
return count;
}
void printListGraph(ListNode *head)
{
printf("head->");
if (head == NULL)
{
return;
}
ListNode *cur = head->next;
while (cur)
{
printf("node(%d)->", cur->data);
cur = cur->next;
}
printf("null\n");
}
int main(int argc, char **argv)
{
ListNode *list = createList();
ListNode *node1 = createNode(3);
ListNode *node2 = createNode(1);
ListNode *node3 = createNode(2);
addListNodeTail(list, node1);
addListNodeTail(list, node2);
addListNodeTail(list, node3);
printf("count:%d\n", getListCount(list));
printListGraph(list);
delListNode(list, node2);
printListGraph(list);
return 0;
}
运行输出:
count:3
head->node(3)->node(1)->node(2)->null
head->node(3)->node(2)->null