957: 逆置单链表
利用了双链表完成;
题目描述
建立长度为n的单链表,然后将其数据元素逆置,即第1个元素变为最后一个元素,第2个元素变为倒数第2个元素,以此类推,最后一个元素变为第1个元素。(处理的数据类型为字符型。必须使用链表完成。)
> 输入
第一行为链表长度n; 第二行为链表中的n个数据元素的值。
输出
逆置后的原始的值。
样例输入
10
ABCDEFGHIJ
样例输出
J I H G F E D C B A
思路:该题用头插法储存数据再输出,类似栈的后进先出;
#include<bits/stdc++.h>
# define maxsize 50
using namespace std;
struct link
{
char data;
link *next;
};
void creat(link *&p)
{
p=new link;
p->next=NULL;
} //创建头结点
void store(link *&p,int num,char str[])
{
for(int i=0;i<num;i++)
{
link *l;
l=new link;
l->data=str[i];
l->next=p->next;
p->next=l;
}
} //头插法
void Cout(link *&p)
{
link *l=p->next;
while(l!=NULL)
{
cout << l->data << ' ';
l=l->next;
}
}
int main()
{
int num;
char str[maxsize];
cin >> num;
for(int i=0;i<num;i++)
{
cin >> str[i];
}
link *p;
creat(p);
store(p,num,str);
Cout(p);
return 0;
}