zhuaizhai 2024-03-13 11:32 采纳率: 90.5%
浏览 11
已结题

C++实现数据的删除操作

C++编写单链表的删除操作函数。编程要求
完成单链表的删除操作函数的定义,具体要求如下:
int ListDelete(LinkList Lint i,ElemType &e):// 在单链表L中删除第i个元素,并由e返回其值
输入说明:
第一行输入单链表的长度M;第二行输入单链表的M个整数;第三行输入要删除元素的位置;输出说明:
如果删除成功,第一行输出删除元素后的单链表;第二行输出删除的数据元素;如果删除位置不合法,输出“删除位置不合法,删除失败!
输入样例1:
5
12 47 5 8 69
1
输出样例1:
47 5 8 69
删除元素的值:12
输入样例2:
5
12 47 5 8 69
6
输出样例2:
删除位置不合法,删除失败!

  • 写回答

4条回答 默认 最新

  • 檀越@新空间 2024-03-13 11:32
    关注

    zhuaizhai 上午好☀️☀️☀️️
    本答案参考ChatGPT-3.5

    下面是实现单链表删除操作的C++代码:

    #include<iostream>
    using namespace std;
    
    // 定义单链表节点结构
    typedef struct LNode {
        int data;
        struct LNode* next;
    }LNode, *LinkList;
    
    // 单链表删除操作函数
    int ListDelete(LinkList L, int i, int& e) {
        if (i < 1) {
            return 0; // 删除位置不合法,返回0
        }
        LNode* p = L;
        int j = 0;
        while (p->next && j < i - 1) {
            p = p->next;
            j++;
        }
        if (p->next == NULL || j > i - 1) {
            return 0; // 删除位置不合法,返回0
        }
        LNode* q = p->next;
        p->next = q->next;
        e = q->data;
        delete q; //释放内存
        return 1;
    }
    
    int main() {
        LinkList L;
        L = new LNode;
        L->next = NULL;
        
        int M; // 单链表长度
        cin >> M;
        for (int i = 0; i < M; i++) {
            int num;
            cin >> num;
            LNode* newNode = new LNode;
            newNode->data = num;
            newNode->next = L->next;
            L->next = newNode;
        }
        
        int i; // 要删除的位置
        cin >> i;
        
        int e; // 删除的元素
        int success = ListDelete(L, i, e);
        
        if (success) {
            LNode* p = L->next;
            while (p) {
                cout << p->data << " ";
                p = p->next;
            }
            cout << endl;
            cout << "删除元素的值:" << e << endl;
        }
        else {
            cout << "删除位置不合法,删除失败!" << endl;
        }
        
        return 0;
    }
    

    解决方案:

    1. 定义单链表节点结构,包括数据域和指针域。
    2. 定义单链表删除操作函数,传入单链表头节点指针、要删除的位置以及存储删除元素的变量引用。
    3. 判断要删除的位置是否合法。如果位置小于1,即小于单链表的第一个位置,返回0表示删除失败;如果位置大于单链表长度,返回0表示删除失败。
    4. 遍历单链表,找到要删除位置的前一个节点。
    5. 删除节点,修改前一个节点的指针域,将其指向后一个节点。
    6. 释放删除节点的内存空间。
    7. 返回1表示删除成功。
    8. 在主函数中,创建单链表并初始化。
    9. 从输入中获取要删除的位置。
    10. 调用单链表删除操作函数进行删除操作。
    11. 判断删除是否成功,如果成功,输出删除后的单链表和删除的元素;如果失败,输出删除失败的提示信息。

    希望对你有所帮助!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 3月22日
  • 已采纳回答 3月14日
  • 创建了问题 3月13日