您的位置:首页 > 教育 > 锐评 > ui设计怎么收费_python编程网页版_怎么制作一个网页_免费网站统计工具

ui设计怎么收费_python编程网页版_怎么制作一个网页_免费网站统计工具

2025/4/2 14:07:01 来源:https://blog.csdn.net/r2931887650/article/details/142779909  浏览:    关键词:ui设计怎么收费_python编程网页版_怎么制作一个网页_免费网站统计工具
ui设计怎么收费_python编程网页版_怎么制作一个网页_免费网站统计工具

目录

7-1 数组元素循环右移n位

7-2 递增有序顺序表的插入

7-3 合并有序数组

 7-4 头插法创建单链表、遍历链表、删除链表(此题提供两种解法)

7-5 单链表就地逆置

7-6 约瑟夫环(押题,非常重要)

7-1 数组元素循环右移n位

从键盘接收两个整数m和n,分别表示一维整型数组的元素个数,和要向移动的位数。已知0<m<=100,以及n>0。

在用户输入m和n后,第二行输入相应个数的数组元素。

程序要实现的功能是,让数组元素往右移动n位

例如,数组的5个元素是:1,2,3,4,5。

往右移动1位后:5,1,2,3,4

往右移动2位后:4,5,1,2,3

输入格式:

第一行输入两个整数,第二行输入数组元素。

输出格式:

移动后,数组的每一个元素,注意每个数组元素后有且仅有一个空格。

输入样例:

第一行的数据5和2,表示数组容量为5,让数组元素往右移动2个位置。

第二行是数组的每一个元素的值。

5 2
1 2 3 4 5 

输出样例:

输出移动后的数组元素值,注意每个元素后有且仅有一个空格。

4 5 1 2 3 
#include<stdio.h>
void youyi(int a[],int m,int n)
{int i,t,j;for(i=0;i<n;i++){t=a[m-1];for(j=m-1;j>=0;j--){a[j]=a[j-1];}a[0]=t;}
}
int main()
{int m,n,i,j;int a[100000];scanf("%d %d",&m,&n);for(i=0;i<m;i++){scanf("%d",&a[i]);}youyi(a,m,n);for(j=0;j<m;j++){printf("%d ",a[j]);}return 0;
}

7-2 递增有序顺序表的插入

实验目的:1、掌握线性表的基本知识 2、深入理解、掌握并灵活运用线性表。3、熟练掌握线性表的存储结构及主要运算的实现
已知顺序表L递增有序,将X插入到线性表的适当位置上,保证线性表有序。。

输入格式:

第1行输入顺序表长度,第2行输入递增有序的顺序表,第3行输入要插入的数据元素X。

输出格式:

对每一组输入,在一行中输出插入X后的递增的顺序表。

输入样例:

在这里给出一组输入。例如:

5
1 3 5 7 9
6

输出样例:

在这里给出相应的输出。例如:

1,3,5,6,7,9,
#include<stdio.h>
int main()
{int n,i,j,t;scanf("%d",&n);int a[n+1];for(i=0;i<n+1;i++){scanf("%d",&a[i]);}for(i=0;i<n+1;i++){for(j=0;j<n-i;j++){if(a[j]>a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;}}}for(i=0;i<n+1;i++){printf("%d,",a[i]);}return 0;
}

7-3 合并有序数组

给定2个非降序序列,要求把他们合并成1个非降序序列。假设所有元素个数为N,要求算法的时间复杂度为O(N)。

输入格式:

输入有4行。
第1行是一个正整数m,表示第2行有m个整数,这些整数构成一个非降序序列,每个整数之间以空格隔开。第3行是一个正整数n,表示第4行有n个整数,这些整数也构成一个非降序序列,每个整数之间以空格隔开。

输出格式:

把第2行的m个整数和第4行的n个整数合并成一个非降序序列,输出这个整数序列。每个数之间隔1个空格。

输入样例:

6
1 3 6 6 8 9  
4
2 4 5 7

输出样例:

1 2 3 4 5 6 6 7 8 9 
#include <stdio.h>
#include <stdlib.h>
void mergeArrays(int* arr1, int m, int* arr2, int n, int* result)//int *arr1就是代表数组的意思 
{int i = 0, j = 0, k = 0;while (i < m && j < n)//确保数组都没有越界{if (arr1[i] <= arr2[j]) //如果第一个数组中的数小于第二个中的数,那我们就把这个小的数先放进去result,这样小的数就放在了前面{result[k] = arr1[i];k++;//此时就把k往后加1,准备存储下一个数i++;//此时i也加1,准备比较下一个数} else{result[k] = arr2[j];k++;j++;}}while (i < m) {result[k] = arr1[i];k++;i++;}//如果上述while循环中有一个不满足条件,也就是说有一个已经遍历完了,这个时候就直接把没遍历完的那一个直接写到result就可以while (j < n) {result[k] = arr2[j];k++;j++;}
}
int main() {int m;scanf("%d", &m);int arr1[m];for (int i = 0; i < m; i++) {scanf("%d", &arr1[i]);}int n;scanf("%d", &n);int arr2[n];for (int i = 0; i < n; i++) {scanf("%d", &arr2[i]);}int result[m+n];mergeArrays(arr1, m, arr2, n, result);for (int i = 0; i < m + n; i++) {printf("%d ", result[i]);}printf("\n");return 0;
}

 7-4 头插法创建单链表、遍历链表、删除链表(此题提供两种解法)

输入一系列自然数(0和正整数),输入-1时表示输入结束。按照输入的顺序,用头插法建立单链表,并遍历所建立的单链表,输出这些数据。注意 -1 不加入链表。

输入格式:

第一行是一个正整数k,表示以下会有k组测试数据。

每组测试数据是一系列以空格隔开的自然数(0和正整数)。数列末尾的 -1 表示本组测试数据结束。按照输入的顺序,用头插法建立单链表,并遍历所建立的单链表,输出这些数据。注意 -1 不加入链表。

输出格式:

对于每组测试数据,输出链表中各节点的数据域。每个数据后有一个空格。每组测试数据的输出占1行。

输入样例:

3
1 2 3 4 5 -1 
30 20 10 -1 
4 2 2 1 1 2 0 2 -1 

输出样例:

在这里给出相应的输出。例如:

5 4 3 2 1 
10 20 30 
2 0 2 1 1 2 2 4 

注意:对每组测试数据,创建链表,遍历链表输出之后,一定要删除链表,否则会出现“内存超限”。

(1)数组模拟链表解法

#include<stdio.h>
int main()
{int t;scanf("%d",&t);while(t--){int n;int a[1000000];int i=0;while(scanf("%d",&n)!=EOF){if(n==-1){break;}else{a[i]=n;i++;}}for(int j=i-1;j>=0;j--){if(j==0){printf("%d \n",a[j]);}elseprintf("%d ",a[j]);}}return 0;
}

(2)传统链表

#include<stdio.h>
#include<stdlib.h>
struct node
{int data;struct node *next;
};
struct node *creat()
{struct node *head,*p;int x;head=(struct node*)malloc(sizeof(struct node));head->next=NULL;while(scanf("%d",&x)!=EOF&&x!=-1){p=(struct node*)malloc(sizeof(struct node));p->data=x;p->next=head->next;head->next=p;}return head;
}
void delete(struct node*head)
{struct node*p;while(head->next){p=head->next;head->next=p->next;free(p);}
}
int main()
{struct node *head,*p;int k;scanf("%d",&k);while(k--){head=creat();p=head->next;while(p){printf("%d ",p->data);p=p->next;}printf("\n");delete(head);}return 0;
}

7-5 单链表就地逆置

输入多个整数,以-1作为结束标志,顺序建立一个带头结点的单链表,之后对该单链表进行就地逆置(不增加新结点),并输出逆置后的单链表数据。

输入格式:

首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试输入多个整数,以-1作为该组测试的结束(-1不处理)。

输出格式:

对于每组测试,输出逆置后的单链表数据(数据之间留一个空格)。

输入样例:

1
1 2 3 4 5 -1

输出样例:

5 4 3 2 1
#include<stdio.h>
#include<stdlib.h>
struct node
{int data;struct node *next;
};
struct node *creat()
{struct node *head,*p;int x;head=(struct node*)malloc(sizeof(struct node));head->next=NULL;while(scanf("%d",&x)!=EOF&&x!=-1){p=(struct node*)malloc(sizeof(struct node));p->next=NULL;p->data=x;p->next=head->next;head->next=p;}return head;
}
int main()
{int t;scanf("%d",&t);while(t--){struct node*head,*r;head=creat();r=(struct node*)malloc(sizeof(struct node));r=head->next;while(r){if(r->next==NULL)printf("%d\n",r->data);elseprintf("%d ",r->data);r=r->next;}}return 0;
}

7-6 约瑟夫环(押题,非常重要)

N个人围成一圈顺序编号,从1号开始按1、2、3......顺序报数,报p者退出圈外,其余的人再从1、2、3开始报数,报p的人再退出圈外,以此类推。
请按退出顺序输出每个退出人的原序号。

输入格式:

输入只有一行,包括一个整数N(1<=N<=3000)及一个整数p(1<=p<=5000)。

输出格式:

按退出顺序输出每个退出人的原序号,数据间以一个空格分隔,但行尾无空格。

输入样例:

在这里给出一组输入。例如:

7 3

输出样例:

3 6 2 7 5 1 4
#include<stdio.h>
#include<stdlib.h>
struct node{int data;struct node *next;
};
struct node *creat(int n)
{struct node *head,*tail,*p;p=(struct node*)malloc(sizeof(struct node));p->data=1;p->next=NULL;tail=head=p;for(int i=2;i<=n;i++){p=(struct node*)malloc(sizeof(struct node));p->data=i;p->next=NULL;tail->next=p;tail=p;}tail->next=head;return head;
}
int main()
{struct node *head,*p,*q;int n,m;scanf("%d %d",&n,&m);head=creat(n);q=head;while(q->next!=head)q=q->next;int a=0;while(q->next!=q){p=q->next;a++;if(m==a){printf("%d ",p->data);q->next=p->next;free(p);a=0;}elseq=p;}printf("%d",q->data);return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com