C语言单链表的创建(使用函数)

C语言单链表的创建(使用函数)

C语言单链表的入门学习
用函数实现上篇文章中建立链表的功能。
将该函数声明为指针函数,返回值为创建链表的链头指针。

node * createlist(void)

将遍历列表的过程也用一个函数来实现。

void display(node * head)
{
    node * p;
    p = head;
    while(p != NULL)
    {
        printf("%d ",p->num);
        p = p->next;
    }
    printf("\n");
}

使用函数来实现单链表的创建。

#include<stdio.h>
#include<stdlib.h>

typedef struct _node
{
    int num;
    struct _node * next;
}node;

node * createlist(void);
void display(node * head);

int main(void)
{
    node *head;
    head = createlist();
    display(head);
    return 0;
}

node * createlist(void)
{
    node * head = NULL, *p, *tail = NULL;
    int n;
    while(scanf("%d", &n) == 1)//当输入不为整数时结束
    {
        p = (node *)malloc(sizeof(node));
        
        if(head == NULL)
           head = p;
        else
           tail->next = p;
           
        p->num = n;
        p->next = NULL;
        tail = p;
    }
    return head;
}

void display(node * head)
{
    node * p;
    p = head;
    while(p != NULL)
    {
        printf("%d ",p->num);
        p = p->next;
    }
    printf("\n");
}
  • 20
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
你可以使用函数指针传递单链表,在C语言函数指针可以作为参数传递给其他函数,让函数能够调用指定的函数。 下面是一个示例代码,展示了如何使用函数指针传递单链表: ```c #include <stdio.h> #include <stdlib.h> // 定义单链表节点结构体 struct Node { int data; struct Node* next; }; // 定义打印节点数据的函数 void printData(struct Node* node) { printf("%d ", node->data); } // 定义遍历链表函数,接受一个函数指针作为参数 void traverse(struct Node* head, void (*func)(struct Node*)) { struct Node* current = head; while (current != NULL) { // 调用传入的函数指针 func(current); current = current->next; } } int main() { // 创建链表 struct Node* head = (struct Node*)malloc(sizeof(struct Node)); struct Node* second = (struct Node*)malloc(sizeof(struct Node)); struct Node* third = (struct Node*)malloc(sizeof(struct Node)); head->data = 1; head->next = second; second->data = 2; second->next = third; third->data = 3; third->next = NULL; // 使用函数指针遍历并打印链表数据 traverse(head, printData); // 释放内存 free(head); free(second); free(third); return 0; } ``` 在上述代码,我们定义了一个 `printData` 函数来打印节点的数据,然后我们定义了一个 `traverse` 函数,该函数接受一个指向 `printData` 函数函数指针作为参数。在 `traverse` 函数内部,我们通过调用传入的函数指针来打印节点的数据。 在 `main` 函数,我们创建一个包含三个节点的单链表,并通过调用 `traverse` 函数来遍历并打印链表的数据。 注意:在使用函数指针传递链表时,确保函数指针与链表的节点类型匹配,以正确访问和操作链表的数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值