数据结构 单链表 编程题
输入一个单链表的头结点,从尾到头反过来打印出每个结点的数值。不能改变单链表的结构。写出编程思路、源代码、运行结果截图。单链表结点的定义如下:StructtagLink{I...
输入一个单链表的头结点,从尾到头反过来打印出每个结点的数值。不能改变单链表的结构。写出编程思路、源代码、运行结果截图。
单链表结点的定义如下:
Struct tagLink
{
Int data;
Struct tagLink *next;
}Link;
C语言编写 展开
单链表结点的定义如下:
Struct tagLink
{
Int data;
Struct tagLink *next;
}Link;
C语言编写 展开
3个回答
展开全部
编程思路:从头到尾读出该链表数据并存入数组中,然后倒序输出数组元素
源代码:
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);
}
运行结果截图:这是一个函数,我测试过了,可行。既然不是一个可运行程序,我就不截图了
源代码:
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);
}
运行结果截图:这是一个函数,我测试过了,可行。既然不是一个可运行程序,我就不截图了
展开全部
你可以尝试一下递归回溯哦~代码仅供参考~
#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);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可从链表的头到尾的顺序进行压栈的方式读入, 并按出栈的顺序读出。 由栈的性质可知: 先进后出, 满足的你的要求。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询