A学习的小菜鸟 发表于 2018-8-25 16:21

关于静态线性表的操作实现。

本帖最后由 A学习的小菜鸟 于 2018-8-25 16:23 编辑

1. 如果输入5个整数,打印出顺序表中的内容,并显示表中剩余的空间。
2. 在顺序表中的第3个位置插入元素0,打印出顺序表中的内容,并显示表中剩余的空间。
3. 当用户试图插入表中第11个位置时,程序会提示超出范围云云。
4. 删除表中第5个元素,打印出顺序表中的内容,并显示表中剩余的空间。
可以写出其代码:

#include <stdio.h>
#define MaxSize 10
// 函数功能:向顺序表中插入元素
// 参数Sqlist[]:顺序表
// 参数*len:顺序表的长度
// 参数i:插入元素的位置
// 参数x:待插入的元素值
void InsertElem( int Sqlist[], int *len, int i, int x)
{
    int t;

    if( *len==MaxSize || i<1 || i>*len+1 )
    {
      printf("输入非法!\n");
      return;
    }

    // 查找待插入的位置
    for( t=*len-1; t >= i-1; t-- )
    {
      Sqlist = Sqlist;
    }

    Sqlist = x;          // 插入元素
    *len = *len + 1;          // 表长+1
}

// 函数功能:在顺序表中删除元素
// 参数Sqlist[]:顺序表
// 参数*len:顺序表的长度
// 参数i:删除元素的位置
void DelElem(int Sqlist[], int *len, int i)
{
    int j;

    if( i<1 || i>*len )
    {
      printf("输入非法!\n");
      return;
    }

    // 将第i个元素之后的元素前移
    for( j=i; j <= *len-1; j++ )
    {
      Sqlist = Sqlist;
    }

    *len -= 1;                // 表长-1
}

int main()
{
    int Sqlist;
    int len;
    int i;

    // 测试要求一
    printf("请输入五个整数:\n");
    for( i=0; i < 5; i++ )
    {
      scanf("%d", &Sqlist);
    }
    len = i;
    printf("表:");
    for( i=0; i < len; i++ )
    {
      printf("%d ", Sqlist);
    }
    printf("\n剩余的空间是:%d\n\n", MaxSize - len);

    // 测试要求二
    printf("\n演示在第3个元素插入0");
    InsertElem( Sqlist, &len, 3, 0 );
    printf("表:");
    for( i=0; i < len; i++ )
    {
      printf("%d ", Sqlist);
    }
    printf("\n剩余的空间是:%d\n\n", MaxSize - len);

    // 测试要求三
    printf("\n演示在第11个元素插入0");
    InsertElem( Sqlist, &len, 11, 0 );

    // 测试要求四
    printf("\n演示删除第五个元素");
    DelElem( Sqlist, &len, 5 );
    printf("表:");
    for( i=0; i < len; i++ )
    {
      printf("%d ", Sqlist);
    }
    printf("\n剩余的空间是:%d\n\n", MaxSize - len);

    return 0;
}
线性表可以说是数据结构最重要的一个结构,希望可以能帮助大家理解线性表的实现,请给楼主点赞和爱心,再次感谢了。

东莞形象代言人 发表于 2018-8-25 17:42

感谢楼主分享
页: [1]
查看完整版本: 关于静态线性表的操作实现。