用c语言创建一个存放日期数据的无序链表
时间: 2023-04-06 22:02:32 浏览: 161
好的,这个问题我可以回答。要创建一个存放日期数据的无序链表,可以先定义一个日期结构体,包含年、月、日三个成员变量,然后定义一个链表结构体,包含日期结构体和指向下一个节点的指针。接着,可以使用malloc函数动态分配内存,创建节点并将其插入链表中。具体实现可以参考以下代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 日期结构体
struct Date {
int year;
int month;
int day;
};
// 链表结构体
struct Node {
struct Date date;
struct Node *next;
};
int main() {
struct Node *head = NULL; // 头节点指针初始化为空
struct Node *p, *q; // 定义两个指针,p用于遍历链表,q用于插入新节点
int year, month, day;
// 读入日期数据,以0 0 0作为输入结束标志
while (1) {
scanf("%d %d %d", &year, &month, &day);
if (year == 0 && month == 0 && day == 0) {
break;
}
// 创建新节点并插入链表
q = (struct Node *)malloc(sizeof(struct Node));
q->date.year = year;
q->date.month = month;
q->date.day = day;
q->next = NULL;
if (head == NULL) {
head = q;
} else {
p = head;
while (p->next != NULL) {
p = p->next;
}
p->next = q;
}
}
// 遍历链表并输出日期数据
p = head;
while (p != NULL) {
printf("%d-%02d-%02d\n", p->date.year, p->date.month, p->date.day);
p = p->next;
}
// 释放链表内存
p = head;
while (p != NULL) {
q = p->next;
free(p);
p = q;
}
return 0;
}
```
阅读全文