关于链表的建立和插入新的结点有点有关问题,有人能帮小弟我看一下吗
关于链表的建立和插入新的结点有点问题,有人能帮我看一下吗?
#include<stdlib.h>
#include<stdio.h>
#include<malloc.h>
typedef struct LNode
{
int data;
struct LNode *next;
}LNode,*LinkList;
void CreateList(LinkList &L,int n)
{
LinkList q,l,p;
l=(LNode*) malloc (sizeof(LNode));
q=l;
L=l;
l->next=NULL;
for(int i=n;i>0;i--)
{
p=(LNode*) malloc (sizeof(LNode));
scanf("%d",&(p->data));
q->next=p;
q=p;
q->next=NULL;
}
}
void EnLinkList(LinkList &L,int i)
{
LinkList p,s;
int j=0;
p=L;
while(i--)
{
p=p->next;
}
s=(LinkList)malloc(sizeof(LNode));
int e;
scanf("%d",&e);
s->data=e;
s->next=p->next;
p->next=s;
}
void main()
{
LinkList pa,La,pb;
CreateList(La,4);
pa=La;
while(pa)
{
printf("%d\n",pa->data);
pa=pa->next;
}
printf("请输入e的值:");
EnLinkList(La,2);
pb=La;
while(pb)
{
printf("%d\n",pb->data);
pb=pb->next;
}
}
输出时有乱码,怎么来的呢?不知道哪出问题了。
------解决方案--------------------
#include<stdlib.h>
#include<stdio.h>
#include<malloc.h>
typedef struct LNode
{
int data;
struct LNode *next;
}LNode,*LinkList;
void CreateList(LinkList &L,int n)
{
LinkList q,l,p;
l=(LNode*) malloc (sizeof(LNode));
q=l;
L=l;
l->next=NULL;
for(int i=n;i>0;i--)
{
p=(LNode*) malloc (sizeof(LNode));
scanf("%d",&(p->data));
q->next=p;
q=p;
q->next=NULL;
}
}
void EnLinkList(LinkList &L,int i)
{
LinkList p,s;
int j=0;
p=L;
while(i--)
{
p=p->next;
}
s=(LinkList)malloc(sizeof(LNode));
int e;
scanf("%d",&e);
s->data=e;
s->next=p->next;
p->next=s;
}
void main()
{
LinkList pa,La,pb;
CreateList(La,4);
pa=La;
while(pa)
{
printf("%d\n",pa->data);
pa=pa->next;
}
printf("请输入e的值:");
EnLinkList(La,2);
pb=La;
while(pb)
{
printf("%d\n",pb->data);
pb=pb->next;
}
}
输出时有乱码,怎么来的呢?不知道哪出问题了。
------解决方案--------------------
- C/C++ code
void CreateList(LinkList &L,int n) { LinkList q,l,p; l=(LNode*) malloc (sizeof(LNode)); scanf("%d",&(l->data)); /*这儿是否是需要个赋值语句*/ q=l; L=l; l->next=NULL; for(int i=n;i>1;i--) /*这儿的循环次数应该是n-1吧?前面已经有1次了*/ { p=(LNode*) malloc (sizeof(LNode)); scanf("%d",&(p->data)); q->next=p; q=p; q->next=NULL; } }