单向链表

描述

牛牛从键盘输入一个长度为 n 的数组,问你能否用这个数组组成一个链表,并顺序输出链表每个节点的值。

输入描述:
第一行输入一个正整数 n ,表示数组的长度
第二行输入 n 个正整数,表示数组中每个元素的值

输出描述:
制作一个链表然后输出这个链表的值

示例

输入:
4
5 4 2 1
输出:
5 4 2 1
说明:请实现链表后再遍历输出结果!

题解

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

//单向循环链表
typedef struct node {
    int data;
    struct node* next;
} node;

//创建头节点
node* add_head() {
    node* Head = (node*)malloc(sizeof(node));
    if (Head == NULL)
        return NULL;
    Head->next = Head;
    return Head;

}

//尾插法
void add_node(node* Head, int data) {
    node* new = (node*)malloc(sizeof(node));
    if (new == NULL)
        return;
    //节点成员赋值
    new->data = data;
    new->next = NULL;
    //链接

    node* pT = NULL;
    for (pT = Head; pT->next != Head; pT = pT->next);

    new->next = pT->next;
    pT->next = new;
}

//输出链表
void output(node* Head) {
    if (Head->next == Head)
        return;
    node* pT = Head->next;
    while (pT != Head) {
        printf("%d ", pT->data);
        pT = pT->next;
    }
}

int main() {
    int n;
    scanf("%d", &n);
    node* Head = add_head();//头节点
    //动态内存分配
    int* array = (int*)malloc(n * sizeof(int));
    for (int i = 0; i < n; i++) {
        scanf("%d", &array[i]);
    }
    //将数据插入链表
    for (int j = 0; j < n; j++) {
        add_node(Head, array[j]);
    }
    output(Head);
    free(array);//释放内存
    array = NULL;//防止悬空指针
    return 0;
}
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇