首页 > 试题广场 >

C语言链表测试

[编程题]C语言链表测试
  • 热度指数:17 时间限制:C/C++ 5秒,其他语言10秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
用C语言创建一个链表初始值为1,并实现插入3个节点值为 2 3 4 ,遍历并且输出新链表
/* 定义链表节点结构体 */
struct node {
    int data;           /* 数据 */
    struct node *next;  /* 指向下一个节点的指针 */
};


输入描述:
可以在代码中引入相关数值,不用输入    


输出描述:
打印最后遍历的值空格隔开可以是 printf("%d ", p->data);    
示例1

输入

1 2 3 4

输出

1 2 3 4

备注:
注意格式一定是%d后面带空格
#include <stdio.h>
#include <stdlib.h>

/* 定义链表节点结构体 */
struct node {
    int data;           /* 数据 */
    struct node *next;  /* 指向下一个节点的指针 */
};

int main() {
    /* 创建初始节点,设置数据为 1 */
    struct node *head = (struct node *)malloc(sizeof(struct node));
    head->data = 1;
    head->next = NULL;

    /* 插入新节点,设置数据分别为 2、3、4 */
    struct node *p = (struct node *)malloc(sizeof(struct node));
    p->data = 2;
    p->next = NULL;
    head->next = p;

    p = (struct node *)malloc(sizeof(struct node));
    p->data = 3;
    p->next = NULL;
    head->next->next = p;

    p = (struct node *)malloc(sizeof(struct node));
    p->data = 4;
    p->next = NULL;
    head->next->next->next = p;

    /* 遍历链表并输出 */
    struct node *q = head;
    while (q != NULL) {
        printf("%d ", q->data);
        q = q->next;
    }

    /* 释放内存 */
    q = head;
    while (q != NULL) {
        p = q;
        q = q->next;
        free(p);
    }

    return 0;
}

发表于 2024-05-21 21:52:58 回复(0)