typedef struct node
{
node *next; /* pointer to next element in list */
char data;
}node, *pnode, **ppnode; // define two types
// create an empty node
pnode list_createNullNode()
{
pnode p1;
if (p1 = (pnode)malloc(sizeof(node)))
{
p1->next = NULL;
}
return p1;
}
// create a node with data
pnode list_createNode(char c)
{
pnode p1;
if (p1 = (pnode)malloc(sizeof(node)))
{
p1->data = c;
p1->next = NULL;
}
return p1;
}
// delete head
void list_removeHead(node **p)
{
pnode n = *p;
if (*p == NULL) return;
*p = (*p)->next;
free(n);
}
// delete the tail
void list_removeTail(node **p)
{
pnode n = *p;
if (*p == NULL) return;
if ((*p)->next == NULL)
{
*p = NULL;
free(n);
return;
}
while (n->next->next) n = n->next;
free(n->next);
n->next = NULL;
}
// delete a node
bool list_deleteNode(node **p, pnode n)
{
pnode m = *p;
pnode prem;
if ((*p == NULL)||(n == NULL)) return false;
if (*p == n)
{
*p = (*p)->next;
free(m);
return true;
}
pre
单链表相关操作之C语言实现:插入,删除,倒转,复制,查找。。。
最新推荐文章于 2023-12-21 22:30:04 发布
本文介绍了如何使用C语言实现链表的各种操作,包括创建空节点、带有数据的节点、删除头节点、删除尾节点、删除指定节点、倒转链表、查找数据、复制链表以及打印链表。还提供了完整的源代码示例,涵盖了链表的基本操作。
摘要由CSDN通过智能技术生成