顺序表的创建以及简单的算法

#include <stdio.h>
#include <stdlib.h>

typedef int ElemType;
typedef struct
{
    ElemType date[100];
    int length;
    
}Sqlist;
//创建顺序表  k是下标 因为是从0开始的
void CreateList(Sqlist *&L,ElemType a[],int n)
{    int i=0;int k=0;
L=(Sqlist*)malloc(sizeof(Sqlist));
    while(i<n)
    {
        L->date[k]=a[i];
        k++;i++;
    }
    L->length=k;    
}
//打印顺序表
void DispList(Sqlist *L)
{
    int i;
    for(i=0;i<L->length;i++)
{
    printf("%d ",L->date[i]);
 }
     printf("\n");
}

//插入指定数值e到下标为i的位置上去
bool ListEnter(Sqlist *&L,int e,int i)
{    int j;
    if(i<1||i>L->length)
    {
        printf("插入的位置不合法.\n");
    }
    for(j=L->length;j>i;j--)
    {
        L->date[j]=L->date[j-1];
    }
    L->date[i]=e;
    L->length++;
 }
 //菜单函数
 void menu()
 { Sqlist *L;int i;int e;
     printf("=======请选择相应功能=======\n");
     printf(" 1.打印顺序表√             \n");
     printf("2.插入数值√                \n");
     printf("3.根据位置删除数值√        \n");
     printf("4.查找数值√        \n");
     printf("=============================\n") ;
     
     int op;
     scanf("%d",&op);
     switch(op)
     {
         case 1:
        DispList(L);
        break;
    case 2:
        ListEnter(L,e,i);
        break;
    case 3:
        DestoryList();
        break;
    false :
         break;        
     }
         
  }

//删除某个位置的数值
void DelElement(Sqlist*L,int i)
{
    int j;
    if(i<1||i>L->length)
    {
        printf("删除的位置不合法.\n");
    }
    for(j=i-1;j<L->length-1;j++)
    {
        L->date[j]=L->date[j+1];
    }
    L->length--;
 }
// //根据位置查找数值
// void search_loc()
int main(){
    
    Sqlist *L;
    int e;int i;int m;
    int a[]={0,1,2,3,4,5,6,7,8,9};
    //创建顺序表
    CreateList(L,a,10);
    
    //打印顺序表
    printf("打印顺序表:\n");
    DispList(L);
    
    //插入一个数值
    printf("请输入要插入的数值:\n");
    scanf("%d",&e);
    printf("请输入要插入的位置:\n");
    scanf("%d",&i);
    ListEnter(L,e,i);    
    //再一次打印顺序表
    printf("打印顺序表:\n");
    DispList(L);

    //删除一个数值
    printf("请输入要删除的位置:\n");
    scanf("%d",&m);
    DelElement(L,m);
    //再一次打印顺序表
    printf("打印顺序表:\n");
    DispList(L);
    
    
    return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值