创建单向链表 要求:自定义函数create(),实现创建一个链表,将此函数定义为指针类型,使其返回值为指针值,返回值指向一个struct LNode类型数据,实际上是返回链表的头指针。在main()函数中调用自定义函数create(),实现创建一个链表,并将链表中的数据输出。最后别忘了释放链表内存。这里使用malloc()函数实现动态开辟存储单元。 声明struct LNode类型,代码如下: struct LNode { int data; struct LNode *next; }; 程序运行结果示例: 输入: 输入你想创建的结点个数:3 输入整数: 1 2 3 输出: 结果是: 1 2 3 输入提示:"输入你想创建的结点个数:" 输入格式:"%d" 输入提示:"输入整数:\n" 输入格式:"%d" 输出提示:"结果是:\n" 输出格式:"%d " 输出格式:"\n" //在输出所有节点以后换行
时间: 2024-03-10 08:49:51 浏览: 138
好的,以下是代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
struct LNode { // 定义链表节点
int data;
struct LNode *next;
};
struct LNode *create() { // 创建链表函数
int n, i;
struct LNode *head, *tail, *p;
printf("输入你想创建的结点个数:");
scanf("%d", &n);
head = tail = NULL; // 链表为空
for (i = 1; i <= n; i++) {
p = (struct LNode *) malloc(sizeof(struct LNode)); // 动态申请内存
printf("输入整数:\n");
scanf("%d", &(p->data));
p->next = NULL; // 链表尾节点的next为空
if (head == NULL) head = tail = p; // 链表为空,创建头节点,并将头节点作为尾节点
else {
tail->next = p; // 将新节点插入到尾节点后面
tail = p; // 更新尾节点
}
}
return head; // 返回头指针
}
void print(struct LNode *head) { // 输出链表函数
struct LNode *p;
printf("结果是: ");
p = head; // 从头节点开始遍历
while (p != NULL) {
printf("%d ", p->data);
p = p->next; // 指向下一个节点
}
printf("\n");
}
int main() {
struct LNode *head = create(); // 创建链表
print(head); // 输出链表
struct LNode *p = head, *q;
while (p != NULL) { // 释放链表内存
q = p->next;
free(p);
p = q;
}
return 0;
}
```
运行结果示例:
```
输入你想创建的结点个数:3
输入整数:
1
输入整数:
2
输入整数:
3
结果是: 1 2 3
```
阅读全文