数据结构顺序表实现

来源:互联网 发布:js float 保留两位小数 编辑:程序博客网 时间:2024/05/29 19:08

/*********顺序表***************/ 

#include<stdio.h>


#define OK     1
#define ERROR  0
#define MAXSIZE 50          //定义线性表最大长度 
typedef int ElemType;
typedef int Status; 
int a[]={12,14,45,75,84,52,49,56,48,100};
typedef struct
{
ElemType *elem;
    int length;           // 线性表当前长度
}SqList;                  //线性表的类型定义 


/************查找*************/


Status GetElem(SqList L, ElemType e)
{
int i;
    if( L.length==0 || i<1 || i>L.length )
    {
        return ERROR;
    }
    for(i=0;i<L.length;i++)
    {
    if(L.elem[i]==e)
      return i+1;
}

    return OK;



/************插入**********/
Status ListInsert(SqList *L,int i,ElemType e)
{
int k;
if(L->length>=MAXSIZE)  //线性表已满
{
   return ERROR;
}
if(i<1||i>L->length+1)  //判断插入i的位置是否合法 
{
return ERROR;
}
for(k=L->length-1;k>i-1;k--)//将第i个及以后的元素后移 
{
L->elem[k+1]=L->elem[k]; 

L->elem[i-1]=e;
L->length++;       //线性表加1 
return OK; 

}


/*********删除**************/
Status ListDelete(SqList *L,int i, ElemType &e)
{
    int k;


    if( L->length == 0 )
    {
        return ERROR;
    }
    if( i<1 || i>L->length )
    {
        return ERROR;
    }

    e = L.elem[i-1];

    if( i < L.length )
    {
        for( k=i; k < L.length; k++ )
        {
            L.elem[k-1] = L.elem[k];
        }
    }
    L.length--;
    return OK;

/*********打印*************/ 
int display(SqList L)
{
int i;
for(i=0;i<L.length;i++)
   printf("%d ",L.elem[i]);
   printf("\n");
return 0;
}


int main()
{
    int opt; 
    int i,e;
SqList L;
L.elem=a;
while(1)
  {
printf("1打印查看 2查找 3插入 4删除  \n请选择你的操作:\n");
        scanf("%c",&opt);
        switch(opt)
        {
            case 1:
                display(L);
                printf("\n");
                break;


            case 2:
                printf("输入查找元素e:");
                scanf("%d",&e);
                GetElem(L,e);
                printf("\n");
                break;


            case 3:                            //插入 
               printf("输入插入位置i:");
          scanf("%d",&i);
          printf("输入插入元素e:");
          scanf("%d",&e);
      printf("\n");
          ListInsert(&L,i,e); 
          display(L);
                printf("\n");
                break;


            case 4:
                printf("输入删除位置i:");
               ListDelete(L,i,e)
                display(L);
                printf("\n");
                break;


          
        }
    }
    
return 0;
 } 
原创粉丝点击