数据结构 C语言 做了一个多小时都没做出来 求助 !!!!!!!2.7题
答案:2 悬赏:70 手机版
解决时间 2021-11-25 21:44
- 提问者网友:星軌
- 2021-11-25 03:28
数据结构 C语言 做了一个多小时都没做出来 求助 !!!!!!!2.7题
最佳答案
- 五星知识达人网友:你可爱的野爹
- 2021-11-25 03:57
以下代码供你参考
#include
#include
//顺序表就是数组,数组的逆置很简单
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("
");
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("
");
}
//单链表的,采用头插法建立新表就可以了
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("
");
}
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:
");
sxb();
printf("link:
");
link();
return 0;
}追问一会下课回去试试 真的很感谢
#include
#include
//顺序表就是数组,数组的逆置很简单
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("
");
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("
");
}
//单链表的,采用头插法建立新表就可以了
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("
");
}
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:
");
sxb();
printf("link:
");
link();
return 0;
}追问一会下课回去试试 真的很感谢
全部回答
- 1楼网友:青灯有味
- 2021-11-25 05:26
你是哪里不会?
就地逆制就是用一个临时变量,把首跟尾一换嘛,
建立两个指针,head,tail,用临时变量将首位一换撒,
然后head++,tail--追问😭😭😭都不会 你可不可以把完整的代码写出来 让我看看 怎么做的???
就地逆制就是用一个临时变量,把首跟尾一换嘛,
建立两个指针,head,tail,用临时变量将首位一换撒,
然后head++,tail--追问😭😭😭都不会 你可不可以把完整的代码写出来 让我看看 怎么做的???
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯