HU589 2022-07-09 12:43 采纳率: 0%
浏览 34

单链表的插入 运行结果错误

c语言数据结构 单链表的插入 运行结果错误

#include<stdio.h>
#include<stdlib.h>
#define _CRT_SECURE_NO_WARNINGS
#define ERROR 0;
#define OK 1;
typedef struct number{
int num;
struct number *next;
}Lnode,*LinkList;
int n;//n为元素个数
Lnode *Createlist_R(){
int i;
Lnode *head,*r,*p;头指针、尾指针和指针p
head=new Lnode;分配内存
head->next=NULL;
r=head;
printf("请输入元素:\n");
for(i=0;i<n;i++){
p=new Lnode;
scanf("%d",&p->num);生成新结点,输入元素值
p->next=NULL;
r->next=p;
r=p;
}
return (head);
}
typedef int Status;
Status ListInsert(LinkList L,int j,int e){
LinkList p=L;
int i=0;
while(p&&i<j-1){
p=p->next;
i++;
}
if(!p||i>j-1)return ERROR;
LinkList q=(LinkList)malloc(sizeof(Lnode));
q->num=e;
q->next=p->next;
p->next=q;
n++;元素总个数加1
return OK;
}
void print(Lnode *head)
{
Lnode *p;
p=head;
while(p)
{
printf("%3d",p->num);
p=p->next;
}
}
void main(){
int j,e;
Lnode *head;
printf("请输入n的值:");
scanf("%d",&n);
head=Createlist_R();调用函数建立链表
printf("请输入插入元素位置和元素值:");
scanf("%d%d",&j,&e);
Status ListInsert(LinkList L,int j,int e);调用函数在链表中插入元素
printf("新的链表为:");
print(head);调用函数输出插入新元素后的链表
system("pause");
}
运行出来插入的位置都是第一个,且数字是乱码,不知道是什么原因。

  • 写回答

1条回答 默认 最新

  • 快乐鹦鹉 2022-07-09 13:21
    关注

    Status ListInsert(LinkList L,int j,int e);调用函数在链表中插入元素
    你这是定义函数,不是调用函数啊
    改为 ListInsert(head,j,e);
    既然是C语言,怎么能head=new Lnode;分配内存????
    你后面明明写了LinkList q=(LinkList)malloc(sizeof(Lnode));,为啥前面用new啊,C用malloc

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 7月9日

悬赏问题

  • ¥15 编辑cmake lists 明明写了project项目名,但是还是报错怎么回事
  • ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
  • ¥15 特定网页无法访问,已排除网页问题
  • ¥50 如何将脑的图像投影到颅骨上
  • ¥15 提问一个关于vscode相关的环境配置问题,就是输入中文但是显示不出来,代码在idea可以显示中文,但在vscode不行,不知道怎么配置环境
  • ¥15 netcore使用PuppeteerSharp截图
  • ¥20 这张图页头,页脚具体代码该怎么写?
  • ¥15 关于#sql#的问题,请各位专家解答!
  • ¥20 WPF MVVM模式 handycontrol 框架, hc:SearchBar 控件 Text="{Binding NavMenusKeyWords}" 绑定取不到值
  • ¥15 需要手写数字信号处理Dsp三个简单题 不用太复杂