Skip to content

删除运算

c
#include <stdio.h>
#define MAXLEN 100                /*MAXLEN要大于实际线性表的长度*/
typedef int elementtype;         /*根据需要,elementtype也可以定义为其它任何类型*/
typedef struct                  /*定义线性表*/
{
    elementtype s[MAXLEN];   /*定义线性表中元素,MAXLEN为线性表的最大容量*/
    int len;                   /*定义线性表的表长*/
}SqList;

int delsqlist(int i,SqList *sql)     /*删除顺序表(*sql)的第i个元素*/
{
    int j;
    if((i<1)||(i>sql->len))       /*i值非法,返回值为0*/
         return(0);
    else
    {
	      for(j=i+1;j<=sql->len;j++)
             sql->s[j-1]=sql->s[j];    /*向前移动数据,覆盖前一数据*/
         (sql->len)--;               /*表长度减1*/
         return(1);                 /*删除成功,返回值为1*/
    }
}

main()                            /*主程序*/
{
    int b=4,c,k;
    SqList a={0,1,2,3,4,5,6,7,8};     /*赋线性表各元素初值,为与前概念描述一致,a.s[0]闲置不用*/
    a.len=8;                      /*赋线性表长度值*/
    for(k=1;k<=a.len;k++)
    {
	printf("%3d",a.s[k]);         /*输出删除前结果*/
    }
    printf("\n");
    c=delsqlist(b,&a);              /*调用删除函数*/
    if(c==0)
        printf("error\n");
    else
    {
	for(k=1;k<=a.len;k++)
	        printf("%3d",a.s[k]);     /*输出删除后结果*/
    }
    printf("\n");
}

插入运算

c
#include <stdio.h>
#define MAXLEN 100            /*MAXLEN要大于实际线性表的长度*/
typedef int elementtype;           /*根据需要,elementtype也可以定义为其它任何类型*/
typedef struct                    /*定义线性表*/
{
    elementtype s[MAXLEN];     /*定义线性表中元素,MAXLEN为线性表的最大容量*/
    int len;                     /*定义线性表的表长*/
}SqList;

int insertsqlist(int i,elementtype x,SqList *sql)
{                              /*在顺序表(*sql)的第i个元素之前插入一个新元素x*/
    int j;
    if((i<1)||(i>sql->len))          /*i值非法,返回值为0*/
       return(0);
    else
    {
	     for(j=sql->len;j>=i;j--)
	        sql->s[j+1]=sql->s[j];   /*向后移动数据,腾出要插入的空位*/
	     sql->s[j+1]=x;            /*修正插入位置为j+1,将新元素插入到s[j+1]位置*/
	     (sql->len)++;             /*表长加1*/
	     return(1);                /*插入成功,返回值为1*/
    }
}

main()                           /*主程序*/
{
    int b=3,c,k;
    elementtype d=9;
    SqList a={0,1,2,3,4,5,6,7,8};     /*赋线性表各元素初值,为与前概念描述一致,a.s[0]闲置不用*/
    a.len=8;                      /*赋线性表长度值*/
    for(k=1;k<=a.len;k++)
    {
	     printf("%3d",a.s[k]);         /*输出插入前结果*/
    }
    printf("\n");
    c=insertsqlist(b,d,&a);           /*调用插入函数*/
    if(c==0)
        printf("error");
    else
    {
	    for(k=1;k<=a.len;k++)
	       printf("%3d",a.s[k]);        /*输出插入后结果*/
    }
    printf("\n");
}