您的位置:首页 > 编程语言 > C语言/C++

c语言练习6

2010-11-21 22:31 281 查看
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++;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: