mwt20201010 2022-12-24 23:53 采纳率: 100%
浏览 35
已结题

在本地运行OK,结果也是对的,提交到oj上就运行错误了😭

题目网址:https://www.dotcpp.com/oj/problem1676.html

#include <stdio.h>
#include <stdlib.h>

struct node {
    int data;
    struct node *next;
};

typedef struct node NODE;

NODE *creat(int n) {
    NODE *h, *p, *q;
    int i, flag = 0;
    h = (NODE *)malloc(sizeof(NODE));
    p = h;
    for (i = 0; i < n; i++) {
        q = (NODE *)malloc(sizeof(NODE));
        scanf("%d", &q->data);
        if (flag == 0) {
            p->next = q;
            p = q;
            p->next = NULL;
            flag = 1;
        } else {
            h->next = q;
            q->next = p;
            p = q;
        }
    }
    return h;
}

void get_(NODE *h, int x) {
    NODE *p;
    int i;
    p = h;
    for (i = 0; i < x; i++) {
        p = p->next;
        if (p == NULL)
            break;
    }
    if (p != NULL)
        printf("%d\n", p->data);
    else
        printf("get fail\n");
}

void insert_(NODE *h, int x, int y) {
    NODE *p, *q;
    int i = 0;
    p = h;
    while (p != NULL && i < x - 1) {
        p = p->next;
        i++;
    }
    if (i < x - 1)
        printf("insert fail\n");
    else {
        q = (NODE *)malloc(sizeof(NODE));
        q->data = y;
        q->next = p->next;
        p->next = q;
        printf("insert OK\n");
    }
}

void delete_(NODE *h, int x) {
    NODE *p, *q;
    int i = 0;
    p = h;
    while (p->next != NULL && i < x - 1) {
        p = p->next;
        i++;
    }
    if (p->next == NULL)
        printf("delete fail\n");
    else {
        printf("delete OK\n");
        q = p->next;
        p->next = q->next;
        free(q);
    }
}

void show_(NODE *h) {
    NODE *p;
    p = h;
    if (p->next == NULL)
        printf("Link list is empty\n");
    else {
        p = p->next;
        do {
            printf("%d ", p->data);
            p = p->next;
        } while (p != NULL);
        printf("\n");
    }
}

int main() {
    int n, m, x, y;
    char a[10] = {0};
    scanf("%d", &n);
    NODE *h;
    h = creat(n);
    scanf("%d", &m);
    for (int i = 0; i < m; i++) {
        scanf("%s", a);
        if (a[0] == 'g') {
            scanf("%d", &x);
            get_(h, x);
        } else if (a[0] == 'i') {
            scanf("%d%d", &x, &y);
            insert_(h, x, y);
        } else if (a[0] == 'd') {
            scanf("%d", &x);
            delete_(h, x);
        } else if (a[0] == 's')
            show_(h);
    }
    return 0;
}

img

  • 写回答

1条回答 默认 最新

  • SoftwareTeacher 《编程之美》作者 2022-12-25 02:58
    关注

    你觉得 OJ 上面的测试用例和你本地的测试用例有什么区别么?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 3月5日
  • 已采纳回答 2月26日
  • 修改了问题 12月25日
  • 修改了问题 12月25日
  • 展开全部

悬赏问题

  • ¥15 关于#网络安全#的问题:求ensp的网络安全,不要步骤要完成版文件
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥20 使用Photon PUN2解决游戏得分同步的问题
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 Centos / PETGEM