数据结构 单链表 编程题

输入一个单链表的头结点,从尾到头反过来打印出每个结点的数值。不能改变单链表的结构。写出编程思路、源代码、运行结果截图。单链表结点的定义如下:StructtagLink{I... 输入一个单链表的头结点,从尾到头反过来打印出每个结点的数值。不能改变单链表的结构。写出编程思路、源代码、运行结果截图。
单链表结点的定义如下:
Struct tagLink
{
Int data;
Struct tagLink *next;
}Link;
C语言编写
展开
 我来答
昌大少年
2013-05-21 · TA获得超过255个赞
知道小有建树答主
回答量:370
采纳率:0%
帮助的人:184万
展开全部
编程思路:从头到尾读出该链表数据并存入数组中,然后倒序输出数组元素
源代码:
void dao_visit(Link *l)
{
Link* rcv=l;
Link* rcv2=rcv;
int* a;
int lenth=0;
int i=0;
//获得单链表长度
while(rcv)
{
lenth++;
rcv=rcv->next;
}
//为指针a分配lenth个空间
a=(int *)malloc(lenth*sizeof(int));
//将单链表的数据写入a中
while(rcv2)
{
a[i]=rcv2->data;
rcv2=rcv2->next;
i++;
}
//倒序输出
for(i=0;i<lenth;i++)
printf("%d\n",a[lenth-1-i]);
free(a);
}
运行结果截图:这是一个函数,我测试过了,可行。既然不是一个可运行程序,我就不截图了
haiyaojing
2013-05-20 · 超过37用户采纳过TA的回答
知道答主
回答量:160
采纳率:0%
帮助的人:108万
展开全部

你可以尝试一下递归回溯哦~代码仅供参考~

#include <stdio.h>
#include <stdlib.h>
struct tagLink
{
    int data;
    struct tagLink *next;
}Link;
typedef struct tagLink* list;
void creat_list(list L,int data);
void out_put(list L);
int array[10]={1,2,3,4,5,6,7,8,9,10};
int main()
{
    list L;
    L=(list)malloc(sizeof(Link));
    L->next=NULL;
    int i;
    for(i=0;i<10;i++) creat_list(L,array[i]);
    out_put(L->next);
    system("pause");
    return 0;
}
void creat_list(list L,int data)
{
    list P;
    P=(list)malloc(sizeof(Link));
    P->next=L->next;
    L->next=P;
    P->data=data;
}
void out_put(list L)
{
    if(L->next!=NULL) out_put(L->next);
    printf("%d ",L->data);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
5onlylove57
2013-05-21 · TA获得超过131个赞
知道小有建树答主
回答量:94
采纳率:100%
帮助的人:97.3万
展开全部
可从链表的头到尾的顺序进行压栈的方式读入, 并按出栈的顺序读出。 由栈的性质可知: 先进后出, 满足的你的要求。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式