数据结构一线性表的顺序实现

实验一线性表的顺序实现:
1、随机生成100个整数存入一个顺序表,整数范围在[100,200)之间,输出表中所有元素;然后去掉其中所有的偶数,输出表中所有元素。

#include<stdio.h>
#include<stdlib.h>
#include <time.h>
typedef int ElementType;
struct SqList{
    ElementType *Data; 
    int N; /* N为表中元素个数 */
    int MaxSize; /* 表的最大容量 */
};



 struct SqList * CreateList(int M) {
    struct SqList * L;
    L = (SqList*)malloc(sizeof(struct SqList));
    L->Data = (ElementType*)malloc(sizeof(ElementType) * M);
    L->N = 0; /* 初始时元素个数为0 */
    L->MaxSize = M;
    return L;
}

 void Insert(struct SqList *L, int i, ElementType X) {
    int j;
    if (L->N == L->MaxSize){ /* 表空间已满,不能插入*/
        printf("List full.\n");
        return;
    }
    if ( i < 1 || i > L->N + 1) { /*检查插入位置的合法性*/
        printf("illegal i.\n");
        return;
    }
    for ( j = L->N - 1; j >= i - 1; j -- )
        L->Data[j + 1] = L->Data[j]; /* 将 ai~an向后移动一个位置 */
    L->Data[i - 1] = X; /* 新元素存进位置i */
    L->N ++; /* 表中元素个数+1 */
}

 void Delete(struct SqList *L, int i) {
    int j;
    if(i < 1 || i > L->N) { /* 检查删除位置的合法性 */
        printf("illegal i.\n");
        return ;
    }
    for (j = i; j <= L->N - 1; j ++)
        L->Data[j - 1] = L->Data[j]; /* 将 ai+1~ an向前移动一个位置 */
    L->N --; /* 表中元素个数-1 */
}


 void putit(SqList *l){
	for(int i=0;i<l->N;i++){
		printf("%d ",l->Data[i]);
	}
}

 int quou(SqList *l){
	
	for(int i=0;i<l->N;i++)
		if((l->Data[i])%2==0){
			Delete(l,i+1);
			i--;	
		}	
}

 int main(int argc, char *argv[]) {  
    int i,x; 
    SqList *l;
    l=CreateList(100);
    /*for (i = 0; i < 100; i ++){
    	Insert(l,i+1,i); 
	}*/
    srand((int)time(NULL));  // 用time函数取当前时间作为随机数初始化种子
    for (i = 0; i < 100; i ++) 
	{ 
         x=rand()%500;
         if(x<=200&&x>=100)
	    
		Insert(l,i+1,x); 
	    
		else i--;
         
    } 
    
	quou(l);
	putit(l);
    

    return 0;  
} 

2、随机生成20个整数存入一个顺序表,整数范围在(1,200)之间,然后在第一个素数后插入1个0,第二个素数后插入2个0,以此类推,最后输出表中所有元素。

#include<stdio.h>
#include<stdlib.h>
#include <time.h>
typedef int ElementType;
struct SqList{
    ElementType *Data; 
    int N; /* N为表中元素个数 */
    int MaxSize; /* 表的最大容量 */
};



 struct SqList * CreateList(int M) {
    struct SqList * L;
    L = (SqList*)malloc(sizeof(struct SqList));
    L->Data = (ElementType*)malloc(sizeof(ElementType) * M);
    L->N = 0; /* 初始时元素个数为0 */
    L->MaxSize = M;
    return L;
}

 void Insert(struct SqList *L, int i, ElementType X) {
    int j;
    if (L->N == L->MaxSize){ /* 表空间已满,不能插入*/
        printf("List full.\n");
        return;
    }
    if ( i < 1 || i > L->N + 1) { /*检查插入位置的合法性*/
        printf("illegal i.\n");
        return;
    }
    for ( j = L->N - 1; j >= i - 1; j -- )
        L->Data[j + 1] = L->Data[j]; /* 将 ai~an向后移动一个位置 */
    L->Data[i - 1] = X; /* 新元素存进位置i */
    L->N ++; /* 表中元素个数+1 */
}


 void putit(SqList *l){
	for(int i=0;i<l->N;i++){
		printf("%d ",l->Data[i]);
	}
}

int sushu(int x){
	if(x<=0)
	return 0;
	if(x==1||x==2)
	 return 1;
	for(int i=2;i<x;i++)
	if(x%i==0)
	return 0;
	return 1;
}
 void cha0(SqList *l){
 	int i,j,x=1;
 	for(i=0;i<l->N;i++){
 		if(sushu(l->Data[i])==1){
		 
 	   for(j=0;j<x;j++)
 	   
 	   Insert(l,i+2,0);
 	   
 	   x++;}
 	   
 	       
	 }

}
 int main(int argc, char *argv[]) {  
    int i,x; 
    SqList *l;
    l=CreateList(500);

    srand((int)time(NULL));  // 用time函数取当前时间作为随机数初始化种子
    for (i = 0; i < 20; i ++) 
	{ 
         x=rand()%500;
         if(x<=200&&x>=1)
	    
		Insert(l,i+1,x); 
	    
		else i--;
         
    } 
    cha0(l);
	putit(l);
} 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值