Fork me on GitHub

线性表的顺序存储

建立长度为n的顺序表SeqList,长度n通过和n个数据元素通过键盘输入。

要求:

    1)通过调用插入函数,建立一个长度为n的顺序表类的对象,新插入的元素始终插入到第0号位置;

    2)在顺序表SeqList中增加一个删除函数,要求删除顺序表中等于item的所有元素。

输入

输入共有三行,第一行是一个整数n,表示线性表的长度; 第二行输入一个整数item,指定被删除的数据元素值; 第三行是输入n个整数数据元素;

输出

第一行输出第一个线性表的所有数据元素; 第二行输出删除指定数据元素后的线性表的所有数据元素;

样例输入

10
55
1 2 33 44 55 55 55 44 55 12

样例输出

12 55 44 55 55 55 44 33 2 1
12 44 44 33 2 1
#include <iostream>
#include <stdlib.h>
#define Max_size 1000
using namespace std;
//顺序表结构
struct Sq_list
{
    int elem[Max_size + 1];
    int length;
};
//创建并初始化顺序表
int Init_list(Sq_list *L)
{
    L->length = 0;
    return 0;
}
int insert(Sq_list *L,int n)
{
    for (int i = n; i >= 1; i--)
    {
        int data;
        cin >> data;
        L->elem[i] = data;
        L->length++;
    }
    return 0;
}
//删除指定值元素
int Delete(Sq_list *L,int data)
{

    int length = L->length;//存放表的原长
    for (int i = 1; i <= L->length; i++)
    {
        if (L->elem[i] == data)
        {
            for (int j = i; j < L->length; j++)
            {
                L->elem[j] = L->elem[j + 1];
            }
            i--;
            L->length--;
        }
    }
    if (L->length == length)//判断表长是否发生改变
    {
        cout << "您想要删除的元素不在本链表中" << endl;
    }
    return 0;
}
//遍历顺序表
int show(Sq_list *L)
{
    for (int i = 1; i < L->length; i++)
    {
        cout << L->elem[i] << ' ';
    }
    cout << L->elem[L->length] << endl;
    return 0;
}
int main()
{
    Sq_list L;
    Init_list(&L);
    int n;
    cin >> n;
    int data;
    cin >> data;
    insert(&L,n);
    show(&L);
    Delete(&L,data);
    show(&L);
    return 0;
}

 

posted @ 2018-10-23 18:46  Lazy.Cat  阅读(440)  评论(0编辑  收藏  举报