试写一算法,对单链表实现就地逆置,即利用原表的存储空间将线性表 (a1,a2,…,an)逆置为(a

试写一算法,对单链表实现就地逆置,即利用原表的存储空间将线性表(a1,a2,…,an)逆置为(an,an-1,…,a1)提示:将原链表中的头结点和第一个元素结点断开(令其... 试写一算法,对单链表实现就地逆置,即利用原表的存储空间将线性表 (a1,a2,…,an)逆置为(an,an-1,…,a1) 提示:将原链表中的头结点和第一个元素结点断开(令其指针域为空),先构成一个空表,然后将原链表中各结点从第一个结点起依次插入这个新表的头部。 展开
 我来答
牛牛A哥
推荐于2017-09-24 · TA获得超过152个赞
知道小有建树答主
回答量:134
采纳率:0%
帮助的人:126万
展开全部
#include"stdio.h"
#include"iostream.h"
typedef int elementype;
#define MAXSIZE 100
struct list
{
elementype *elem;
int length;
int listsize;
};
//建立链表
int initlist(list *l)
{
int i=0,x;
l->elem=(elementype *)malloc(sizeof(elementype));
if(!l->elem)
{
cout<<"建立链表失败"<<endl;
return 1;
}
l->length=0;
l->listsize=MAXSIZE;
while(1)
{
cout<<"请输入链表数据:";
cin>>x;
if(x==0) break;
l->elem[i]=x;
l->length++;
i++;
}
return 1;
}
int swaplist(list *l)
{
int i=0,k,t;
k=(int)(l->length/2);
for(i=0;i<k;i++)
{
t=l->elem[i];
l->elem[i]=l->elem[l->length-1-i] ;
l->elem[l->length-1-i]=t;
}
return 1;
}
int displaylist(list *l)
{
int i=0;
cout<<"链表数据为:"<<endl;
for(i=0;i<l->length;i++)
{
cout<<l->elem[i]<<" ";

}
cout<<endl;
}

int main()
{
list *l;
initlist(l);
displaylist(l);
swaplist(l);
displaylist(l);
return 1;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式