5、有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前m个数(如下图所示)。写一函数实现以上功能,在主函数中输入n个整数和输出调整后的n个整数。
程序1:
#include"stdio.h"
int main()
{
int swap(int a[],int m);
int a[10],i,m;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
scanf("%d",&m);
swap(a,m);
return 0;
}
int swap(int a[],int m)
{
int *p,i,j;
for(p=a+10-m,i=0;i<m;i++)
printf("%d",*p++);
for(p=a,i=0;i<10-m;i++)
printf("%d",*p++);
}
程序2:(指针)
#include<stdio.h>
#include<malloc.h>
typedef struct tagLinkList
{
int *data;
struct tagLinkList *next;
}LinkList;
void insert(LinkList *head,int *x);
void swap(LinkList *head,int m);
int main()
{
int m,n,i,f[100];
LinkList *head,p;
head=((LinkList*)malloc(sizeof(LinkList)));
head->data=NULL;
head->next=NULL;
scanf("%d%d",&n,&m);
printf("n=%d;m=%d/n",n,m);
for(i=0;i<n;i++)
{
scanf("%d",&f[i]);
printf("%d ",f[i]);
insert(head,f+i);
}
printf("/n");
swap(head,m);
p=*(head->next);
while(p.next!=NULL)
{
printf("%d ",*(p.data));
p=*(p.next);
}
printf("%d/n",*(p.data));
return 0;
}
void insert(LinkList *head,int *x)
{
LinkList *p,*temp;
temp=(LinkList *)malloc(sizeof(LinkList));
if(head->next==NULL)
{
head->next=temp;
}
else
{
p=head;
while(p->next!=NULL)
{
p=p->next;
}
p->next=temp;
}
temp->data=x;
temp->next=NULL;
}
void swap(LinkList *head,int m)
{
LinkList *p,*q;
int i=0;
while(i<m)
{
p=head;
while (p->next!=NULL)
{
q=p;
p=p->next;
}
q->next=NULL;
p->next=head->next;
head->next=p;
i++;
}
}