数据结构 C语言 做了一个多小时都没做出来 求助 !!!!!!!2.7题
2个回答
展开全部
以下代码供你参考
#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;
}
追问
一会下课回去试试 真的很感谢😃😃😃
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询