建立如下结构体类型struct PRIME_LINK: int prime; //存放一个素数。 int* next 在程序中建立结点为struct PRIME_LINK类型的单链表。存放2~100间的所有素数。求出一个素数,使用malloc函数申请structPRIME_LINK大小的内存为新结点,存放该素数,并链接到链表末尾。程序遍历该链表,显示全部素数。程序结束前使用free函数释放单链表中所有结点。
时间: 2024-03-25 22:37:38 浏览: 37
好的,这是一个关于单链表和素数的问题,我将为您解答。以下是代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义结构体类型
struct PRIME_LINK {
int prime; // 存放一个素数
struct PRIME_LINK* next; // 指向下一个节点的指针
};
// 判断一个数是否为素数
int is_prime(int n) {
if (n <= 1) {
return 0;
}
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
return 0;
}
}
return 1;
}
int main() {
// 创建头结点
struct PRIME_LINK* head = (struct PRIME_LINK*)malloc(sizeof(struct PRIME_LINK));
head->prime = 2;
head->next = NULL;
// 遍历2~100间的所有素数
for (int i = 3; i <= 100; i++) {
if (is_prime(i)) {
// 创建新结点
struct PRIME_LINK* node = (struct PRIME_LINK*)malloc(sizeof(struct PRIME_LINK));
node->prime = i;
node->next = NULL;
// 将新结点链接到链表末尾
struct PRIME_LINK* p = head;
while (p->next != NULL) {
p = p->next;
}
p->next = node;
}
}
// 遍历链表,显示全部素数
struct PRIME_LINK* p = head;
while (p != NULL) {
printf("%d ", p->prime);
p = p->next;
}
printf("\n");
// 释放单链表中所有结点
p = head;
while (p != NULL) {
struct PRIME_LINK* temp = p;
p = p->next;
free(temp);
}
return 0;
}
```
该程序先创建一个头结点,然后遍历2~100间的所有数,判断是否为素数,如果是素数,则创建一个新结点,存放该素数,并将新结点链接到链表末尾。最后遍历链表,显示全部素数。程序结束前使用free函数释放单链表中所有结点。
阅读全文