建立单链表并打印链表节点值

这篇博客介绍如何用C语言一次性编码完成单链表的创建,并展示了一个简单的打印链表节点值的示例代码,包括创建链表、打印链表节点的函数以及Makefile配置。
摘要由CSDN通过智能技术生成

一次性编码搞定, 建立单链表并打印链表节点值.

linklist.c


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

#define     DEBUG_PRT(fmt,arg...)    printf(fmt,##arg)

typedef struct linklist
{
    int value;
    struct linklist *next;
}Mylist_s;

Mylist_s *create_list(int number)
{
    Mylist_s *head = NULL;
    Mylist_s *p = NULL;
    Mylist_s *s= NULL;
    int i = 0;
    
    if(NULL == (head = (Mylist_s *)malloc(sizeof(Mylist_s))))
    {
        DEBUG_PRT("malloc error \n");
        exit(1);
    }
    head->value = -1;
    head->next = NULL;
    
    p = head;
    for(i=0; i<number; i++)
    {
        if(NULL == (s = (Mylist_s *)malloc(sizeof(Mylist_s))))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以按照以下步骤来实现单链表的逆序建立: 1. 定义一个指向链表节点的指针p和一个中间节点的指针q,初始化p指向头节点,q指向NULL。 2. 依次遍历链表,每次将p节点链表中摘下,并将其插入到q节点之前。 3. 将q指向p,继续遍历链表,直到p指向NULL。 4. 将尾节点指向NULL,新的逆序链表建立完成。 下面是逆序建立单链表的C语言实现代码: ```c #include <stdio.h> #include <stdlib.h> // 定义链表节点结构体 typedef struct Node { int data; // 存储数据 struct Node *next; // 指向下一个节点 } Node; // 创建新节点 Node* createNode(int data) { Node *newNode = (Node*) malloc(sizeof(Node)); newNode->data = data; newNode->next = NULL; return newNode; } // 逆序建立单链表 Node* reverseList(Node *head) { Node *p = head, *q = NULL; // 定义指针p和q while (p) { Node *next = p->next; // 记录p的下一个节点 p->next = q; // 将p摘下,并插入到q节点之前 q = p; // 将q指向p p = next; // 将p指向下一个节点 } return q; // 返回新的链表节点 } // 打印链表 void printList(Node *head) { Node *p = head; while (p) { printf("%d ", p->data); p = p->next; } printf("\n"); } int main() { Node *head = createNode(1); head->next = createNode(2); head->next->next = createNode(3); head->next->next->next = createNode(4); printf("原链表:"); printList(head); head = reverseList(head); printf("逆序链表:"); printList(head); return 0; } ``` 输出结果为: ``` 原链表:1 2 3 4 逆序链表:4 3 2 1 ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值