• 编写一个完整程序,使用顺序表实现以下任务


    (1)产生50个1~100的随机整数,将其中偶数依次保存在顺序表中
    (2)输出顺序表的所有元素,并求顺序表的长度
    (3)在指定位置i处插入一个1~100随机整数
    (4)删除顺序表中值为i或者指定位置I的节点
    (5)将顺序表升序排列

    #include<stdio.h>
    #include<stdlib.h>
    #define maxSize 100
    typedef int elemtype;
    typedef struct {
    elemtype data[maxSize];
    int size;
    }seqlist;
    seqlist *create_seqlist();
    void print_seqlist(seqlist *l);
    int insert_seqlist(seqlist *l,int i);
    void delet_seqlist(seqlist *l);
    void sort_seqlist(seqlist *l);

    seqlist *create_seqlist()
    {
    int i;
    seqlist *l=(seqlist *)malloc(sizeof(seqlist));
    if(l==NULL)
    return l;
    l->size=-1;
    for(i=0;i<50;i++)
    {
    elemtype a=rand()%99+1;
    if(a%2==0)
    l->data[++l->size]=a;
    }
    return l;
    }

    void print_seqlist(seqlist *l)
    {
    int i;
    for(i=0;i<=l->size;i++)
    printf("%d ",l->data[i]);
    printf(" 链表长度为:%d ",l->size+1);

    }

    int insert_seqlist(seqlist *l)
    {
    int i;
    printf(" 请选择要插入的位置:");
    scanf("%d",&i) ;
    if(i>l->size+1)
    return 0;
    int x=l->size;
    for(;x+1>i;x--)
    l->data[x+1]=l->data[x];
    l->data[i]= rand()%99+1;
    return 1;
    }
    void delet_seqlist(seqlist *l)
    {
    int n=l->size;
    int select;
    int x=0,i;
    do{
    printf("请选择删除方式: ");
    printf("0.不删除 1.删除指定值 2.删除指定位置 ");
    scanf("%d",&select);
    if(select==1)
    {
    printf("请选择要删除的值:");
    scanf("%d",&i);
    while(i!=l->data[x]&&x<=l->size) x++;

    if(x==l->size+1)
    printf(" 该值不存在!删除失败! ");
    if(x!=l->size+1)
    printf(" 删除成功! ");
    for(;x<n;x++)
    l->data[x]=l->data[x+1];
    print_seqlist(l);
    }
    else if(select==2)
    {

    printf("请选择要删除的位置:");
    scanf("%d",&i);
    if(i>l->size+1)
    printf("位置有误!删除失败!");
    else
    printf(" 删除成功! ");
    print_seqlist(l);


    }
    else if(select==0);
    else
    printf("输入选项有误,请重新输入!");
    }while(select!=0);
    }

    void sort(seqlist *l)
    {
    int i=0,j=0;
    int size=l->size;
    int temp;
    for(i=0;i<size;i++)
    {
    for(j=0;j<size-i;j++)
    {
    if(l->data[j]>l->data[j+1])
    {
    temp=l->data[j];
    l->data[j]=l->data[j+1];
    l->data[j+1]=temp;
    }
    }
    }
    printf("升序排序如下: ");
    print_seqlist(l);
    }
    int main()
    {
    int i,result;
    seqlist *l;
    l=create_seqlist();
    print_seqlist(l);
    result=insert_seqlist(l);
    if(result==1)
    printf("插入成功! ");
    else
    printf("插入失败! ");
    print_seqlist(l);
    delet_seqlist(l);
    sort(l);



    }

  • 相关阅读:
    [置顶] 当今世界最受人们重视的十大经典算法
    Android入门:调用WebService
    Android入门:实现一个File存储的辅助类
    多线程下载辅助类实现
    在Java程序中设置代理
    配置EditPlus使其可以编译运行java程序
    Android入门:文件上传
    Resource is out of sync with the file system
    【入门算法】思维导图
    sharepoint2010 重建服务器场的方法
  • 原文地址:https://www.cnblogs.com/qin5429/p/8413664.html
Copyright © 2020-2023  润新知