数据结构 C语言 做了一个多小时都没做出来 求助 !!!!!!!2.7题

 我来答
kaixingui2012
2015-03-25 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6294万
展开全部
以下代码供你参考
#include<stdio.h>
#include <stdlib.h>

//顺序表就是数组,数组的逆置很简单
void sxb()
{
int a[5]={1,2,3,4,5};
int i=0,t;
for( i=0;i<5;i++ )
printf("%d ", a[i] );
printf("\n");
for( i=0;i<5/2;i++ )
{
t=a[i];
a[i]=a[5-i-1];
a[5-i-1]=t;
}
for( i=0;i<5;i++ )
printf("%d ", a[i] );
printf("\n");
}
//单链表的,采用头插法建立新表就可以了
struct node {
    int n;
    struct node *next ;
} *list=NULL;
void createList()
{
    struct node *p;
    int i;
    
    for( i=5;i>0;i-- )
{
p=(struct node *) malloc( sizeof(struct node) );
p->n=i;
//头插法建立链表
p->next=list;
list=p ; 
}
}
void showList()
{
struct node *p=list;
while( p)
    {
printf("%d ", p->n );
p=p->next;
    }
printf("\n");
}

void reverseList()
{
    struct node *p=NULL,*h=list,*t; //h为原表头 p为新表的临时表头

    while(h)
{
t=h; //分离出一个结点t
h=h->next; //h成为剩余结点的表头(保持原表的连续可遍历)
//以下两句是头插法的基本操作
t->next=p; //把t结点加入新表
p=t; //t成为新表头
}
list=p;//最终的p是新表的表头,赋值给list
}
void link()
{
createList();
showList();
reverseList();
showList();
}

int main()
{
printf("sxb:\n");
sxb();
printf("link:\n");
link();
return 0;
}
追问
一会下课回去试试   真的很感谢😃😃😃
piz168
2015-03-25 · 超过15用户采纳过TA的回答
知道答主
回答量:43
采纳率:100%
帮助的人:22.4万
展开全部
你是哪里不会?
就地逆制就是用一个临时变量,把首跟尾一换嘛,
建立两个指针,head,tail,用临时变量将首位一换撒,
然后head++,tail--
追问
😭😭😭都不会   你可不可以把完整的代码写出来  让我看看  怎么做的???
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式