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");
}
运行出来插入的位置都是第一个,且数字是乱码,不知道是什么原因。
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