数据结构C语言版,单链表代码,可直接运行并加上注释
时间: 2023-06-06 11:05:50 浏览: 105
抱歉,我可以为您提供一些关于单链表的C语言代码实现,在此附上代码。但请注意,由于您并未说明具体要求,代码仅供参考。
```
#include <stdio.h>
#include <stdlib.h>
//定义链表结构体
struct Node
{
int data; //链表元素
struct Node* next; //下一个节点元素,指向下一个节点。
};
//初始化链表为空
struct Node *head = NULL;
//向链表中添加新元素(头插法)
void addElement(int new_data)
{
struct Node *new_node = (struct Node*) malloc(sizeof(struct Node)); //申请新节点空间
new_node->data = new_data;
new_node->next = head;
head = new_node; //头指针指向新节点
}
//删除指定元素
void deleteElement(int key)
{
struct Node* temp = head;
struct Node* prev = NULL;
//如果头结点即为所删节点
if(temp != NULL && temp->data == key)
{
head = temp->next; //改变头指针
free(temp); //释放节点空间
return;
}
//找到要删除的节点并记录前驱节点
while(temp != NULL && temp->data != key)
{
prev = temp;
temp = temp->next;
}
//未找到对应节点
if(temp == NULL)
{
return;
}
prev->next = temp->next; //改变前驱节点的next值
free(temp); //释放节点空间
}
//输出链表元素
void printList()
{
struct Node* ptr = head;
printf("\n链表节点:");
while(ptr != NULL)
{
printf(" %d ", ptr->data);
ptr = ptr->next;
}
}
//主函数
int main()
{
addElement(1);
addElement(2);
addElement(3);
addElement(4);
printf("原链表:");
printList();
deleteElement(3);
printf("\n删除节点3后的链表:");
printList();
return 0;
}
```
阅读全文