首先,什么是链表呢?
链表是由节点组成的一种数据结构,它的每一个节点包含数据和指向下一个节点的引用。
常见的链表有许多种:
- 单链表:每个节点只有一个指向下一个节点的引用。
- 双链表:每个节点有指向前一个和后一个节点的引用。
- 循环链表:尾节点指向头节点,形成一个环。
关于链表的简单操作(附上代码):
1.定义链表节点结构:
struct Node
{
int data;
struct Node* next;
};
2.创建空链表:
struct Node* head = NULL;
3.在链表的头部插入元素:
void inserttop(int value)
{
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
newNode->data = value;
newNode->next = head;
head = newNode;
}
4.在链表尾部插入元素:
void insertEnd(int value)
{
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
newNode->data = value;
newNode->next = NULL;
if (head == NULL)
{
head = newNode;
}
else
{
struct Node* temp = head;
while (temp->next != NULL)
{
temp = temp->next;
}temp->next = newNode;
}
}
5.删除指定值的节点:
void delete(int value)
{
struct Node *current = head, *prev = NULL;
while (current != NULL && current->data != value)
{
prev = current;
current = current->next;
}
if (current != NULL)
{
if (prev == NULL)
{
head = current->next;
}
else
{
prev->next = current->next;
}free(current);
}
}
6.打印链表元素:
void print()
{
struct Node* temp = head;
while (temp != NULL)
{
printf("%d -> ", temp->data);
temp = temp->next;
}printf("NULL\n");
}
链表的一些优点:
链表相对数组,它的插入和删除操作变得更加高效,因为链表不需要移动大量元素,也不需要预先分配固定大小的内存,链表可以动态分配空间。
同时,栈和队列也可以通过链表实现。链表还能和递归结合,例如反转链表的递归实现。
写在最后:
这几天我把C语言的链表这一知识点简单的归纳了一下,虽然我归纳的这些链表知识有些浅显,但是易懂!
感谢大家的阅读!欢迎大家指出文章的错误!