gzy159 发表于 2020-4-6 10:07:09

顺序表的插入和删除操作

麻烦帮忙看下主函数要怎么修改才能运行调用顺序表的插入和删除操作
{:10_266:} {:10_266:} {:10_266:}
枯了


#include "stdio.h"   
#include "stdlib.h"   
#include "io.h"
#include "math.h"
#include "time.h"

#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0

#define MAXSIZE 20 /* 存储空间初始分配量 */

typedef int Status;          /* Status是函数的类型,其值是函数结果状态代码,如OK等 */
typedef int ElemType;      /* ElemType类型根据实际情况而定,这里假设为int */


Status visit(ElemType c)
{
    printf("%d ",c);
    return OK;
}

gzy159 发表于 2020-4-6 10:08:41


#include "stdio.h"   
#include "stdlib.h"   
#include "io.h"
#include "math.h"
#include "time.h"

#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0

#define MAXSIZE 20 /* 存储空间初始分配量 */

typedef int Status;          /* Status是函数的类型,其值是函数结果状态代码,如OK等 */
typedef int ElemType;      /* ElemType类型根据实际情况而定,这里假设为int */


Status visit(ElemType c)
{
    printf("%d ",c);
    return OK;
}
       
typedef struct
{
        ElemType data;      /* 数组,存储数据元素 */
        int length;                              /* 线性表当前长度 */
}SqList;



Status InitList(SqList *L)
{
    L->length=0;
    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->data;
    if (i<L->length)                /* 如果删除不是最后位置 */
    {
      for(k=i;k<L->length;k++)/* 将删除位置后继元素前移 */
                        L->data=L->data;
    }
    L->length--;
    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;

        if (i<=L->length)      /* 若插入数据位置不在表尾 */
        {
                for(k=L->length-1;k>=i-1;k--)/* 将要插入位置之后的数据元素向后移动一位 */
                        L->data=L->data;
        }
        L->data=e;          /* 将新元素插入 */
        L->length++;

        return OK;
}





int main()
{

        int i,n,x,del;

        //插入
        printf("您要输入几位数:");
        scanf("%d",&n);
        for(i=1;i<=n;i++){
                scanf("%d",&x);
                ListInsert(L,x,i);
        }
       
        //删除
        printf("请输入你要删除的数的下标:\n",del);
        scanf("%d",&del);
        ListDelete(L,del);
        printf("输出线性表:\n");
        for(i=0;i<=L->Last;i++){
                printf("%d ",L->Data);
        }
        printf("\n");
        return 0;
}

页: [1]
查看完整版本: 顺序表的插入和删除操作