列表

详情


CC7. 牛牛的单向链表

描述

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

输入描述

第一行输入一个正整数 n ,表示数组的长度

输出描述

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

示例1

输入:

4
5 4 2 1

输出:

5 4 2 1

说明:

请实现链表后再遍历输出结果!

原站题解

C 解法, 执行用时: 2ms, 内存消耗: 288KB, 提交时间: 2022-07-30

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

typedef struct linkNode
{
    int data;
    struct linkNode *next;
}LinkNode;

LinkNode* iniLinkNode(void)
{
    LinkNode *head = (LinkNode*)malloc(sizeof(LinkNode));
    if(head==NULL)
    {
        printf("内存分配失败!\n");
        exit(1);
    }
    head->next = NULL;
    return head;
}

void insertLinkNode(LinkNode* head,int data)
{
    LinkNode *ptr = (LinkNode*)malloc(sizeof(LinkNode));
    ptr = head;
    while(ptr->next!=NULL)
    {
        ptr = ptr->next;
    }
    LinkNode *new_LinkNode = (LinkNode*)malloc(sizeof(LinkNode));
    new_LinkNode->data = data;
    new_LinkNode->next = NULL;
    ptr->next = new_LinkNode;
}

int main(void)
{
    int n;
    scanf("%d",&n);
    int arr[n];
    for(int i=0;i<n;i++)
    {
        scanf("%d",&arr[i]);
    }
    LinkNode *head = iniLinkNode();
    head->data = arr[0];
    for(int j=1;j<=n;j++)
    {
        insertLinkNode(head, arr[j]);
    }
    
    while(head->next!=NULL)
    {
        printf("%d ",head->data);
        head = head->next;
    }
    
    return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 296KB, 提交时间: 2022-07-30

#include<stdio.h>
typedef struct Node
{
    int value;
    struct Node *link;
}node;
node*Init_list(int n)
{
    node*header=(node*)malloc(sizeof(node));
    header->value=0;
    header->link=NULL;
    node*pRear=header;
    int count=0;
    int v;
    while(count<n)
    {
        scanf("%d",&v);
        node*code=(node*)malloc(sizeof(node));
        code->value=v;
        code->link=NULL;
        pRear->link=code;
        pRear=code;
        count++;
    }
    return header;
}
int main()
{
    int n;
    scanf("%d",&n);
    node*pNow=Init_list(n)->link;
    while(pNow!=NULL)
    {
        printf("%d ",pNow->value);
        pNow=pNow->link;
    }
    
    return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 300KB, 提交时间: 2022-08-02

#include<stdio.h>
typedef struct Node
{
    int data;
    struct Node *next;
}Node,*LinkList;
int main(void)
{
    int n,data;
    scanf("%d",&n);
    LinkList L=(Node*)malloc(sizeof(Node));
    Node*p=L;
    for(int i=0;i<n;i++)//尾插法建立单链表
    {
        p->next=(Node*)malloc(sizeof(Node));
        p=p->next;
        scanf("%d",&data);
        p->data=data;
        p->next=NULL;
    }
    p=L->next;
    while(p)
    {
        printf("%d ",p->data);
        p=p->next;
    }
    return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 300KB, 提交时间: 2022-05-05

#include <stdio.h>

typedef struct Node
{
    int val;
    struct Node * next;
}Node;

int main(){
    int n,i,t;
    scanf("%d",&n);
    Node *p,*head,*q;
    p=head=(Node *)malloc(sizeof(Node));
    for(i=0;i<n;++i){
        scanf("%d",&t);
        q=(Node *)malloc(sizeof(Node *));
        q->val=t;
        q->next=NULL;
        p->next=q;
        p=q;
    }
    head=head->next;
    while(head!=NULL){
        printf("%d ",head->val);
        head=head->next;
    }
    return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 300KB, 提交时间: 2022-03-18

#include<stdio.h>
#include<stdlib.h>
typedef struct lNode{
    int num;
     struct lNode* next;
}LNode;
    
int main(){
    int len;
    scanf("%d",&len);
    LNode *LNodearray=(LNode*)malloc(sizeof(LNode)*len);
    LNodearray[0].next=NULL;
    for(int i=0;i<len;i++){
        scanf("%d",&LNodearray[i].num);
        if(i!=len-1){
            LNodearray[i].next=&LNodearray[i+1];
        }
        else{
            LNodearray[i].next=NULL;
        }
    }
    for(int i=0;i<len;i++){
        printf("%d ",LNodearray[i].num);    
    }
    return 0;
}

上一题