故态 2020-10-26 16:14 采纳率: 0%
浏览 83

c语言数据结构运行超时

编译没错但是运行一直超时
看了半天不知道怎么回事 求求大佬帮忙看看 老师不理人 自学真的难受
题目在最后边
#include
#include
typedef struct Node{
int data;
struct Node *pNext;
}NODE,*PNODE;

PNODE create_list(int n)
{
int i;
int val;

PNODE pHead = (PNODE)malloc(sizeof(NODE));
    if (NULL == pHead)
{
    printf("分配失败, 程序终止!\n");
    exit(-1);
}
PNODE pTail = pHead;
pTail->pNext = NULL;


for (i=0; i<n; ++i)
{
    scanf("%d", &val);

    PNODE pNew = (PNODE)malloc(sizeof(NODE));
        if (NULL == pNew)
    {
        printf("分配失败, 程序终止!\n");
        exit(-1);
    }

    pNew->data = val;
    pTail->pNext = pNew;
    pNew->pNext = NULL;
    pTail = pNew;
}

return pHead;

}
void traverse_list(PNODE pHead)
{
PNODE p = pHead->pNext;

while(p!=NULL)
{
    printf("%d ",p->data);
    p = p->pNext;

}
printf("\n");
return;

}
void sort(PNODE pHead,int x)
{
int i=1;
PNODE p = (PNODE)malloc(sizeof(NODE));
p = pHead->pNext;
PNODE r = (PNODE)malloc(sizeof(NODE));
while(p!=NULL&&p->data>=x)

{
i++;
p = p->pNext;
} // 找到插入位置
r->data = x;
r->pNext = p->pNext;
p->pNext = r;
if(i==1)
{
r->data = x;
r->pNext = p;
pHead->pNext = r;
}
printf("%d",i);
}

int main()

{
int n,x;
PNODE pHead = NULL;
while(scanf("%d",&n)!=EOF)
{
pHead =create_list(n);
scanf("%d",&x);
if(n==0)
{
printf("%d",&x);
}
else
{
sort(pHead,x);
traverse_list(pHead);

    }
}
return 0;

}

图片说明图片说明



  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-07-24 23:11
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    这段代码的目的是创建一个链表来模拟学生的排列,并在适当的时候插入一个新的元素。然而,在运行过程中,它遇到了一些问题导致程序无法正常运行。

    错误的原因可能是:

    1. 缺少对新节点的初始化和释放。
    2. 未正确处理内存泄漏。

    解决这些问题的方法包括:

    1. create_list()函数中添加以下代码以确保每个节点都有正确的初始化和释放:
    void create_node(int value, PNODE* head) {
        PNODE new_node = (PNODE) malloc(sizeof(NODE));
        if (new_node != NULL) {
            new_node->data = value;
            new_node->next = NULL;
            *head = new_node;
        }
    }
    
    1. sort()函数中添加以下代码以避免内存泄漏:
    PVOID new_node = malloc(sizeof(NODE));
    if (new_node != NULL) {
        pNew->data = val;
        pTail->pNext = pNew;
        pNew->pNext = NULL;
        pTail = pNew;
        free(new_node); // 将新节点的内存释放
    }
    
    1. 如果上述修改仍然不能解决问题,请检查其他地方是否还有内存泄露或其他错误。
    评论

报告相同问题?

悬赏问题

  • ¥30 这个功能用什么软件发合适?
  • ¥60 微信小程序,取消订单,偶尔订单没有改变状态
  • ¥15 用pytorch实现PPO算法
  • ¥15 关于调制信号的星座图?
  • ¥30 前端传参时,后端接收不到参数
  • ¥15 这是有什么问题吗,我检查许可证了但是显示有呢
  • ¥15 机器学习预测遇到的目标函数问题
  • ¥15 Fluent,液体进入旋转区域体积分数不连续
  • ¥15 java linux下将docx文件转pdf
  • ¥15 maven无法下载依赖包