线性表——顺序表示

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


struct SeqList
    {
        int MAXNUM;
        int n;
        int *element;
    };
    typedef struct SeqList *PSeqList;


PSeqList createNullList_seq(int m){
   PSeqList palist = (PSeqList)malloc(sizeof(struct SeqList));
   if(palist!=NULL)
    {
        palist->element=(int*)malloc(sizeof(int)*m);
        if(palist->element)
        {
            palist->MAXNUM=m;
            palist->n=0;
            return palist;
        }
        else free(palist);


    }
    printf("Out of space!!\n");
    return NULL;
}


int deleteP_seq(PSeqList palist,int p){
  int q;
  if(p<0||p>palist->n-1){
       printf("Not exist!\n");
       return 0;}
  for(q=p-1;q<palist->n-1;q++)
        palist->element[q]=palist->element[q+1];
  palist->n=palist->n-1;
  return 1;
}


int insertPre_seq(PSeqList palist,int p,int x){
    int q;
    if(palist->n>=palist->MAXNUM){
        printf("Overflow!\n");
        return 0;
    }
    if(p<0||p>palist->n){
        printf("Not exist!\n");return 0;
    }
    for(q=palist->n-1;q>=p-1;q--){
        palist->element[q+1]=palist->element[q];}
    palist->element[p]=x;
    palist->n=palist->n+1;
    return 1;
}






int main()
{
    int op;
    int m,i;
    PSeqList palist;
    printf("您需要多大的空间:\n");
    scanf("%d",&m);
    palist=createNullList_seq(m);
        for(i=0;i<m;i++){
            palist->element[i]=i;
            palist->n++;
    }
        for(i=0;i<m;i++){
            printf("%d ",palist->element[i]);
        }


    printf("\n");
while(1){
 printf("\n");
    printf("请选择需要执行的项目:\n1.Delete\n2.Insert\n3.查询\n4.修改\n");printf("\n");
    scanf("%d",&op);
    int a,b,c,d,e;
    switch(op)
    {
    case 1:


              printf("请输入需删除的序号:\n");
              scanf("%d",&a);
              deleteP_seq(palist,a);
              for(i=0;i<m-1;i++){
              printf("%d ",palist->element[i]);
              }
              printf("\n\n                      删除成功!!!!\n");
              break;
    case 2:
              printf("请输入需要插入的序号、数值:\n");
              scanf("%d %d",&a,&b);
              printf("##########\n");
              palist->n=palist->n-1;
              insertPre_seq(palist,a,b);
              for(i=0;i<=m+1;i++){
              printf("%d ",palist->element[i]);
              }
              printf("\n\n                     插入数值成功!!!!\n");
              break;
    case 3:
              printf("请输入查询序号:\n");
              scanf("%d",&c);


                printf("%d ",palist->element[c-1]);
              break;




    case 4:
              printf("请输入修改序号及数值:\n");
              scanf("%d %d",&d,&e);
              printf("###\n");
              palist->element[d]=e;
              for(i=0;i<m;i++){
                printf("%d ",palist->element[i]);
                }
                printf("\n\n               修改成功!!!!\n");
              break;
    default :
            printf("输入错误!!!!!");
    }


}


    return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值