2024年4月30日发(作者:)
数据结构链式表基本操作代码
链式表是一种常用的数据结构,它可以用来存储和操作大量数据
元素。在这篇文章中,我们将介绍链式表的基本操作,并给出相应的
代码实现。
1. 链式表的定义
链式表是由若干个节点构成的数据结构,每个节点包含两部分数
据:一个是存储实际数据的数据域,另一个是指向下一个节点的指针。
链式表的头节点是一个特殊的节点,它不存储实际数据,只有指向下
一个节点的指针。
2. 链式表的基本操作
2.1 链式表的创建
链式表的创建需要先创建头节点,然后逐个创建节点并将它们插
入链表中。创建节点时需要为节点分配内存空间,并将节点的数据域
和指针域初始化。
//定义链式表节点类型
typedef struct node {
int data; //数据域
struct node *next; //指针域
} Node;
//创建链式表
Node *createList() {
Node *head = (Node *)malloc(sizeof(Node)); //创建头节点
- 1 -
head->next = NULL; //将头节点的指针域初始化
Node *p = head; //p指向头节点
int x;
while (1) {
scanf('%d', &x); //输入新节点的数据
if (x == -1) break; //输入-1表示输入结束
Node *newNode = (Node *)malloc(sizeof(Node)); //创建新
节点
newNode->data = x; //初始化新节点的数据域
newNode->next = NULL; //将新节点的指针域初始化
p->next = newNode; //将新节点插入链表尾部
p = newNode; //p指向新节点
}
return head; //返回头节点
}
2.2 链式表的遍历
链式表的遍历是指依次访问链表中的每个节点,并对每个节点进
行相应的操作。遍历链表时需要从头节点开始,依次访问每个节点的
数据域,并将指针移动到下一个节点。
//遍历链式表
void traverseList(Node *head) {
Node *p = head->next; //p指向第一个实际节点
- 2 -
while (p) { //p不为NULL时循环
printf('%d ', p->data); //输出节点数据
p = p->next; //p指向下一个节点
}
printf('
'); //输出换行符
}
2.3 链式表的插入
链式表的插入是指在链表中插入一个新节点,并将它插入到指定
的位置。插入新节点时需要先找到插入位置的前一个节点,然后通过
修改指针将新节点插入到链表中。
//在链式表的第i个位置插入新节点
void insertList(Node *head, int i, int x) {
Node *p = head; //p指向头节点
for (int j = 1; j < i; j++) { //找到第i-1个节点
if (p == NULL) {
printf('Error: The position is out of range!
');
return;
}
p = p->next;
}
- 3 -
Node *newNode = (Node *)malloc(sizeof(Node)); //创建新
节点
newNode->data = x; //初始化新节点的数据域
newNode->next = p->next; //将新节点的指针域指向第i个节
点
p->next = newNode; //将第i-1个节点的指针域指向新节点
}
2.4 链式表的删除
链式表的删除是指在链表中删除一个节点,并将它从链表中移除。
删除节点时需要先找到要删除的节点,然后通过修改指针将该节点从
链表中移除。
//删除链式表的第i个节点
void deleteList(Node *head, int i) {
Node *p = head; //p指向头节点
for (int j = 1; j < i; j++) { //找到第i-1个节点
if (p == NULL) {
printf('Error: The position is out of range!
');
return;
}
p = p->next;
}
- 4 -
Node *q = p->next; //q指向第i个节点
p->next = q->next; //将第i-1个节点的指针域指向第i+1个
节点
free(q); //释放第i个节点的空间
}
3. 总结
本文介绍了链式表的基本操作,包括创建链表、遍历链表、插入
节点和删除节点。通过代码实现,读者可以更加深入地理解链式表的
特点和操作方式。在实际开发中,链式表常常用来实现各种数据结构
和算法,是一种非常重要的数据结构。
- 5 -
发布者:admin,转转请注明出处:http://www.yc00.com/web/1714448053a2448400.html
评论列表(0条)