zhujuntao1 2023-03-24 18:20 采纳率: 75%
浏览 58
已结题

数据结构线性表,没啥思路

img


数据结构线性表,没啥思路,来个提醒或给个答案呗。abcsde

  • 写回答

2条回答 默认 最新

  • 社区专家-Monster-XH 2023-03-24 18:44
    关注

    基于Monster 组和GPT的调写:
    1

    int deleteMin(List* list) {
        if (list == NULL || list->size == 0) {
            printf("Error: Empty List\n");
            exit(1);
        }
        int minIndex = 0;
        int minValue = list->data[0];
        for (int i = 1; i < list->size; i++) {
            if (list->data[i] < minValue) {
                minIndex = i;
                minValue = list->data[i];
            }
        }
        int lastValue = list->data[list->size - 1];
        list->data[minIndex] = lastValue;
        list->size--;
        return minValue;
    }
    
    
    

    2.

    void deleteRange(List* list, int t) {
        if (list == NULL || list->size == 0) {
            printf("Error: Empty List\n");
            exit(1);
        }
        int writeIndex = 0;
        for (int i = 0; i < list->size; i++) {
            if (list->data[i] < t) {
                list->data[writeIndex++] = list->data[i];
            }
        }
        list->size = writeIndex;
    }
    
    
    
    

    3.

    void deleteSortedRange(List* list, int t) {
        if (list == NULL || list->size == 0) {
            printf("Error: Empty List\n");
            exit(1);
        }
        int writeIndex = 0;
        for (int i = 0; i < list->size; i++) {
            if (list->data[i] < t) {
                list->data[writeIndex++] = list->data[i];
            } else {
                break;
            }
        }
        list->size = writeIndex;
    }
    
    
    

    4.

    List* mergeSortedLists(List* list1, List* list2) {
        if (list1 == NULL || list1->size == 0) {
            return list2;
        } else if (list2 == NULL || list2->size == 0) {
            return list1;
        }
        List* mergedList = createList(list1->size + list2->size);
        int i = 0, j = 0, k = 0;
        while (i < list1->size && j < list2->size) {
            if (list1->data[i] < list2->data[j]) {
                mergedList->data[k++] = list1->data[i++];
            } else {
                mergedList->data[k++] = list2->data[j++];
            }
        }
        while (i < list1->size) {
            mergedList->data[k++] = list1->data[i++];
        }
        while (j < list2->size) {
            mergedList->data[k++] = list2->data[j++];
        }
        mergedList->size = k;
        return mergedList;
    }
    
    
    

    5.

    void removeDuplicates(List* list) {
        if (list == NULL || list->size == 0) {
            printf("Error: Empty List\n");
            exit(1);
        }
        int writeIndex = 0;
        for (int i = 0; i < list->size; i++) {
            if (i == 0 || list->data[i] != list->data[i-1]) {
                list->data[writeIndex++] = list->data[i];
            }
        }
        list->size = writeIndex;
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月1日
  • 已采纳回答 3月24日
  • 创建了问题 3月24日

悬赏问题

  • ¥15 PADS Logic 原理图
  • ¥15 PADS Logic 图标
  • ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
  • ¥20 气象站点数据求取中~
  • ¥15 如何获取APP内弹出的网址链接
  • ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
  • ¥50 STM32单片机传感器读取错误
  • ¥15 (关键词-阻抗匹配,HFSS,RFID标签天线)
  • ¥15 机器人轨迹规划相关问题
  • ¥15 word样式右侧翻页键消失