#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<math.h>
struct SqList{
int *Data;
int N;
int MaxSize;
};
struct SqList *create(int maxsize){
struct SqList *sq;
sq=(struct SqList *)malloc(sizeof(struct SqList));
sq->Data=(int *)malloc(sizeof(int)*maxsize);
sq->N=0;
sq->MaxSize=maxsize;
}
void show(struct SqList *sq){
for(int i=0;i<sq->N;i++){
printf("%d\t",sq->Data[i]);
if((i+1)%10==0){
printf("\n");
}
}
printf("\n");
}
void Sq_insert(struct SqList *sq,int num){
if(sq->MaxSize==sq->N){
printf("List is full\n");
return;
}
sq->Data[sq->N]=num;
sq->N++;
}
int location(struct SqList *sq,int num){
int re=-1;
for(int i=0;i<sq->N;i++){
if(sq->Data[i]==num){
re=i;
break;
}
}
return re;
}
int isPrime(int num){
if(num==0||num==1){
return 0;
}
int i,q;
q=sqrt(num);
for(i=2;i<=q;i++){
if(num%i==0){
break;
}
}
if(i>q){
return 1;
}else{
return 0;
}
}
void Zero_insert(struct SqList *sq,int num){
if(sq->MaxSize==sq->N){
printf("List is full\n");
return;
}
int index = location(sq,num);
if(index==-1){
printf("This num does not exist\n");
return;
}
for(int j=sq->N;j>index+1;j--){
sq->Data[j]=sq->Data[j-1];
}
sq->Data[index+1]=0;
sq->N++;
}
int main(){
srand((int)time(NULL));
struct SqList *sq;
sq=create(1000);
for(int i=0;i<20;i++){
int temp=rand()%198+2;
Sq_insert(sq,temp);
}
show(sq);
int count=0;
for(int i=0;i<sq->N;i++){
if(isPrime(sq->Data[i])){
int temp=sq->Data[i];
count++;
for(int j=0;j<count;j++){
Zero_insert(sq,temp);
}
}
}
show(sq);
return 0;
}
09-30
384