C语言:数列的移动给定一个长度为N的连续数列,给M次操作,每次操作给定一个数K,要求把当前数列中的第K个数移动到数列最前面,用链表实现,输出M次操作后的数列.#include#include#define LEN sizeof(st
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/14 12:29:05
![C语言:数列的移动给定一个长度为N的连续数列,给M次操作,每次操作给定一个数K,要求把当前数列中的第K个数移动到数列最前面,用链表实现,输出M次操作后的数列.#include#include#define LEN sizeof(st](/uploads/image/z/1085182-70-2.jpg?t=C%E8%AF%AD%E8%A8%80%EF%BC%9A%E6%95%B0%E5%88%97%E7%9A%84%E7%A7%BB%E5%8A%A8%E7%BB%99%E5%AE%9A%E4%B8%80%E4%B8%AA%E9%95%BF%E5%BA%A6%E4%B8%BAN%E7%9A%84%E8%BF%9E%E7%BB%AD%E6%95%B0%E5%88%97%2C%E7%BB%99M%E6%AC%A1%E6%93%8D%E4%BD%9C%2C%E6%AF%8F%E6%AC%A1%E6%93%8D%E4%BD%9C%E7%BB%99%E5%AE%9A%E4%B8%80%E4%B8%AA%E6%95%B0K%2C%E8%A6%81%E6%B1%82%E6%8A%8A%E5%BD%93%E5%89%8D%E6%95%B0%E5%88%97%E4%B8%AD%E7%9A%84%E7%AC%ACK%E4%B8%AA%E6%95%B0%E7%A7%BB%E5%8A%A8%E5%88%B0%E6%95%B0%E5%88%97%E6%9C%80%E5%89%8D%E9%9D%A2%2C%E7%94%A8%E9%93%BE%E8%A1%A8%E5%AE%9E%E7%8E%B0%2C%E8%BE%93%E5%87%BAM%E6%AC%A1%E6%93%8D%E4%BD%9C%E5%90%8E%E7%9A%84%E6%95%B0%E5%88%97.%23include%23include%23define+LEN+sizeof%28st)
C语言:数列的移动给定一个长度为N的连续数列,给M次操作,每次操作给定一个数K,要求把当前数列中的第K个数移动到数列最前面,用链表实现,输出M次操作后的数列.#include#include#define LEN sizeof(st
C语言:数列的移动
给定一个长度为N的连续数列,给M次操作,每次操作给定一个数K,要求把当前数列中的第K个数移动到数列最前面,用链表实现,输出M次操作后的数列.
#include
#include
#define LEN sizeof(struct Hn)
struct Hn
{
int num;
struct Hn *next;
};
struct Hn* creat(int n)
{
struct Hn * head,*p,*q;
head=NULL;
p= (struct Hn *)malloc(LEN);
scanf("%d",&p->num);
head=p;
q=p;
while(n-1)
{
p= (struct Hn *)malloc(LEN);
scanf("%d",&p->num);
q -> next = p;
q=p;
--n;
}
q->next =NULL;
return head;
}
struct Hn *move(struct Hn *head,int a)
{
int j;
struct Hn *p,*k;
p=head;
if(head!=NULL)
{
for(j=1;jnext;
k=p->next;
p->next=k->next;
k->next=head;
head=k;
}
return head;
}
int main()
{
int M,i,a,N;
struct Hn *head,*q;
scanf("%d",&N);
head=creat(N);
scanf("%d",&M);
for(i=0;inum);
q=q->next;
}while(q!=NULL);
printf("\n");
return 0;
}
这个程序有些答案是不可以的
C语言:数列的移动给定一个长度为N的连续数列,给M次操作,每次操作给定一个数K,要求把当前数列中的第K个数移动到数列最前面,用链表实现,输出M次操作后的数列.#include#include#define LEN sizeof(st
#include
#include
#define LEN sizeof(struct Hn)
struct Hn
{
int num;
struct Hn *next;
};
struct Hn* creat(int n)
{
struct Hn * head,*p,*q;
head=NULL;
p= (struct Hn *)malloc(LEN);
printf("请输入数列元素:");
scanf("%d",&p->num);
head=p;
q=p;
while(n-1)
{
p= (struct Hn *)malloc(LEN);
scanf("%d",&p->num);
q -> next = p;
q=p;
--n;
}
q->next =NULL;
return head;
}
struct Hn *move(struct Hn *head,int a)
{
int j;
struct Hn *p,*k;
p=head;
if(head!=NULL)
{
for(j=1;jnext;
}
if(p==NULL||p->next==NULL)
{
printf("位置:%d非法,将自动跳过此操作.\n",a);
return head;
}
k=p->next;
p->next=k->next;
k->next=head;
head=k;
}
return head;
}
int main()
{
int M,i,a,N;
struct Hn *head,*q;
printf("请输入数列长度:");
scanf("%d",&N);
head=creat(N);
printf("请输入移动次数:");
scanf("%d",&M);
printf("请输入待前置的元素位置:");
for(i=0;inum);
q=q->next;
}while(q!=NULL);
printf("\n");
return 0;
}