试编写在带头结点的动态单链表上实现线性表操作length(l)的算法,并将长度写入头结点的数据域中。
时间: 2023-04-27 08:05:45 浏览: 226
在带头结点的动态单链表上实现线性表操作length(l)的算法,可以通过遍历链表来统计节点数量,最后将结果存储在头结点的数据域中。
具体实现步骤如下:
1. 定义一个计数器count,初始值为。
2. 从头结点的下一个节点开始遍历链表,每遇到一个节点,就将计数器加1。
3. 遍历完整个链表后,将计数器的值存储在头结点的数据域中。
4. 返回计数器的值,即为链表的长度。
代码实现如下:
```
int length(LinkList L) {
int count = ;
LNode *p = L->next;
while (p != NULL) {
count++;
p = p->next;
}
L->data = count;
return count;
}
```
其中,L为带头结点的动态单链表,LNode为链表节点的结构体。
相关问题
编写在带头结点的动态单链表和静态单链表上实现线性表操作LENGTH(L)的算法,并将长度写入头结点的数据域中
动态单链表:
1. 初始化计数器count为0,指针p指向头结点的下一结点L->next。
2. 当p不为NULL时,执行以下操作:
a. 计数器count加1。
b. 指针p指向下一结点p->next。
3. 将计数器count的值存入头结点的数据域L->data。
4. 返回计数器count的值。
静态单链表:
1. 初始化计数器count为0,指针p指向第一个数据结点L[0]。
2. 当p的游标域不为0时,执行以下操作:
a. 计数器count加1。
b. 指针p指向下一结点L[p->cur]。
3. 将计数器count的值存入头结点的数据域L[0].data。
4. 返回计数器count的值。
用c语言编写在带头结点的动态单链表和静态单链表上实现线性表操作LENGTH(L)的算法,并将长度写入头结点的数据域中
动态单链表实现:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int data;
struct Node* next;
} Node;
typedef struct {
Node* head;
} LinkedList;
int LENGTH(LinkedList* L) {
int len = 0;
Node* p = L->head->next;
while (p != NULL) {
len++;
p = p->next;
}
L->head->data = len;
return len;
}
int main() {
LinkedList L;
L.head = (Node*)malloc(sizeof(Node));
L.head->data = 0; // 初始化头结点的数据域为0
L.head->next = NULL;
Node* p = L.head;
// 尾插法创建链表
for (int i = 1; i <= 5; i++) {
Node* node = (Node*)malloc(sizeof(Node));
node->data = i;
node->next = NULL;
p->next = node;
p = node;
}
printf("链表长度为:%d\n", LENGTH(&L));
printf("头结点的数据域为:%d\n", L.head->data);
return 0;
}
```
静态单链表实现:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef struct {
int data;
int next;
} Node;
typedef struct {
Node nodes[MAXSIZE];
int head;
} LinkedList;
int LENGTH(LinkedList* L) {
int len = 0;
int p = L->head;
while (p != -1) {
len++;
p = L->nodes[p].next;
}
L->nodes[0].data = len;
return len;
}
int main() {
LinkedList L;
L.head = 1;
// 初始化静态单链表
for (int i = 1; i < MAXSIZE; i++) {
L.nodes[i].next = i + 1;
}
L.nodes[MAXSIZE - 1].next = -1; // 最后一个结点的next为-1
L.nodes[0].data = 0; // 初始化头结点的数据域为0
int p = L.head;
// 尾插法创建链表
for (int i = 1; i <= 5; i++) {
L.nodes[p].data = i;
p = L.nodes[p].next;
}
printf("链表长度为:%d\n", LENGTH(&L));
printf("头结点的数据域为:%d\n", L.nodes[0].data);
return 0;
}
```
相关推荐
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)