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 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 linux驱动,linux应用,多线程