栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

6-32 表头插入法构造链表

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

6-32 表头插入法构造链表

本题实现链表的构造,采用表头插入法构造链表,输出表中所有元素。

函数接口定义:
函数接口:
ptr  creat( );//构造链表
void output(ptr p);//输出链表元素

其中 p 是用户传入的参数。creat函数返回链表的头指针,输入在creat函数中输入,以0表示输入结束。output函数输出链表元素,以一个空格隔开。

裁判测试程序样例:
#include 
#include 

typedef struct node
{
    int data;
    struct node *next;
}snode,*ptr;

ptr  creat( );//构造链表
void output(ptr p);//输出链表元素

int main()
{
    ptr head;
    head=creat();
    output(head);
    return 0;
}

输入样例:
1 2 3 0

结尾无空行

输出样例:
3 2 1 

结尾无空行

思路:采用表头插入法构造一个链表,然后输出

这一题我开始看到输入数据和输出数据的时候,我以为是要逆序输出,后来我才意识到表头插入法本来就是逆序的,所以这里直接输出即可

话不多说,上代码:

ptr  creat()//构造链表
{
    int x;
    ptr head,p;
    head=NULL;
    scanf("%d",&x);
    while(x!=0)
    {
        p=(ptr)malloc(sizeof(snode));
        p->data=x;
        p->next=head;
        head=p;
        scanf("%d",&x);
    }
    return head;
}
void output(ptr p)//输出链表元素
{
    while(p!=NULL)
    {
        printf("%d ",p->data);
        p=p->next;
    }
}

 拓展:这里介绍一种逆序输出的代码,非常神奇的思路(递归方法):

void output(ptr head)
{
 if(NULL==head)
{
 return;
}
 
 if(head->next!=NULL)
{
   output(head->next);
}
printf("%d",head->data);
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/629125.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号