我可以帮你实现这个线性表。以下是基于C++的代码实现:

#include <iostream>
using namespace std;

// 线性表的最大长度
const int MAX_SIZE = 100;

// 定义线性表结构
typedef struct {
    int data[MAX_SIZE]; // 存储元素的数组
    int length; // 线性表长度
} List;

// 初始化线性表
void initList(List &list) {
    list.length = 0;
}

// 销毁线性表
void destroyList(List &list) {
    list.length = 0;
}

// 清空线性表
void clearList(List &list) {
    list.length = 0;
}

// 判断线性表是否为空
bool isEmpty(List list) {
    return list.length == 0;
}

// 求线性表长度
int getLength(List list) {
    return list.length;
}

// 获取线性表中指定位置的元素
int getElement(List list, int index) {
    if (index < 0 || index >= list.length) {
        cout << '索引越界' << endl;
        return -1;
    }
    return list.data[index];
}

// 获取线性表元素的位置
int getIndex(List list, int element) {
    for (int i = 0; i < list.length; i++) {
        if (list.data[i] == element) {
            return i;
        }
    }
    return -1; // 未找到元素
}

// 求线性表中指定元素的前驱
int getPredecessor(List list, int element) {
    int index = getIndex(list, element);
    if (index == -1 || index == 0) {
        cout << '无前驱' << endl;
        return -1;
    }
    return list.data[index-1];
}

// 求线性表中指定元素的后继
int getSuccessor(List list, int element) {
    int index = getIndex(list, element);
    if (index == -1 || index == list.length-1) {
        cout << '无后继' << endl;
        return -1;
    }
    return list.data[index+1];
}

// 在线性表指定位置插入元素
void insertElement(List &list, int index, int element) {
    if (index < 0 || index > list.length) {
        cout << '索引越界' << endl;
        return;
    }
    
    if (list.length == MAX_SIZE) {
        cout << '线性表已满' << endl;
        return;
    }
    
    for (int i = list.length-1; i >= index; i--) {
        list.data[i+1] = list.data[i];
    }
    list.data[index] = element;
    list.length++;
}

// 删除线性表指定位置的元素
void deleteElement(List &list, int index) {
    if (index < 0 || index >= list.length) {
        cout << '索引越界' << endl;
        return;
    }
    
    for (int i = index; i < list.length-1; i++) {
        list.data[i] = list.data[i+1];
    }
    list.length--;
}

// 显示线性表
void displayList(List list) {
    cout << '线性表中的元素为: ';
    for (int i = 0; i < list.length; i++) {
        cout << list.data[i] << ' ';
    }
    cout << endl;
}

int main() {
    List list;
    initList(list);
    
    int code;
    while (true) {
        cout << '请输入操作代码:';
        cin >> code;
        
        if (code < 0) {
            break;
        }
        
        switch(code) {
            case 1: {
                initList(list);
                cout << '线性表已初始化' << endl;
                break;
            }
            case 2: {
                destroyList(list);
                cout << '线性表已销毁' << endl;
                break;
            }
            case 3: {
                clearList(list);
                cout << '线性表已清空' << endl;
                break;
            }
            case 4: {
                bool empty = isEmpty(list);
                if (empty) {
                    cout << '线性表为空' << endl;
                } else {
                    cout << '线性表不为空' << endl;
                }
                break;
            }
            case 5: {
                int length = getLength(list);
                cout << '线性表长度为: ' << length << endl;
                break;
            }
            case 6: {
                int index;
                cout << '请输入要获取元素的位置:';
                cin >> index;
                int element = getElement(list, index);
                cout << '位置为 ' << index << ' 的元素为: ' << element << endl;
                break;
            }
            case 7: {
                int element;
                cout << '请输入要获取位置的元素:';
                cin >> element;
                int index = getIndex(list, element);
                if (index != -1) {
                    cout << '元素 ' << element << ' 的位置为: ' << index << endl;
                } else {
                    cout << '元素 ' << element << ' 不存在' << endl;
                }
                break;
            }
            case 8: {
                int element;
                cout << '请输入要获取前驱的元素:';
                cin >> element;
                int predecessor = getPredecessor(list, element);
                if (predecessor != -1) {
                    cout << '元素 ' << element << ' 的前驱为: ' << predecessor << endl;
                }
                break;
            }
            case 9: {
                int element;
                cout << '请输入要获取后继的元素:';
                cin >> element;
                int successor = getSuccessor(list, element);
                if (successor != -1) {
                    cout << '元素 ' << element << ' 的后继为: ' << successor << endl;
                }
                break;
            }
            case 10: {
                int index, element;
                cout << '请输入要插入的位置和元素:';
                cin >> index >> element;
                insertElement(list, index, element);
                cout << '插入成功' << endl;
                break;
            }
            case 11: {
                int index;
                cout << '请输入要删除的元素的位置:';
                cin >> index;
                deleteElement(list, index);
                cout << '删除成功' << endl;
                break;
            }
            case 12: {
                displayList(list);
                break;
            }
            default: {
                cout << '无效的操作代码' << endl;
                break;
            }
        }
    }
    
    return 0;
}

这段代码实现了一个简单的线性表,可以根据不同的操作代码执行相应的操作。例如,输入代码"1"可以初始化线性表,输入代码"5"可以求线性表的长度,输入代码"12"可以显示线性表中的元素等。

C++ 线性表实现:初始化、销毁、清空、判断空、获取长度、获取元素、获取位置、求前驱、求后继、插入、删除、显示

原文地址: https://www.cveoy.top/t/topic/bqij 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录