假设,输入数字5表示数组大小,再输入1 2 3 4 5,表示数组中的五个元素,使用链表的方法,
将输出变为5 1 2 3 4 。
方法一、使用链表:
#include <iostream>
using namespace std;
struct node{
int val;
node * next;
};
struct node * init()
{// 构造一个空链表
struct node *head;
head=new node;
head->next=NULL;
return head;
}
void creat(struct node *head,int n){
struct node *p,*q;
p=head;
int t;
for(int i=0;i<n;i++){
q=new node;
cin>>t;
q->val=t;
p->next=q;
p=q;
};
p->next=NULL;
}
void printnode(struct node *head){
struct node *p;
p=head->next;
while(p){
cout<<p->val<<' ';
p=p->next;
}
}
struct node * moveFromLast(struct node *head){
struct node *p,*q;
if(head==NULL || head->next==NULL) return;
p=head;
q=head->next;
while(q->next){
p=q;
q=q->next;
}
p->next=NULL;
q->next=head->next;
head->next=q;
return head;
}
int main(){
int n;
cin>>n;
// n=5;
struct node *head;
head=init();
creat(head,n);
// printnode(head);
head=moveFromLast(head);
printnode(head);
return 0;
}
方法二、使用数组:
#include <iostream>
using namespace std;
int main(){
int n;
cin>>n;
int a[n],b[n];
for(int i=0;i<n;i++) cin>>a[i];
int t1=a[n-1],t2=a[n-2];
for(int i=0;i<n-2;i++){
b[i+2]=a[i];
}
b[1]=t1;
b[0]=t2;
for(int i=0;i<n;i++) cout<<b[i]<<" ";
return 0;
}