创建链表的一个问题:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define ok 1
#define error 0
#define overflow 0
typedef struct lnode
{
int data;
struct lnode *next;
}lnode,*linklist;
int initlist_l(linklist &l)
{
l=(linklist)malloc(sizeof(lnode));
if(!l)
exit(overflow);
l->next=NULL;
return ok;
}
////////////////////////////////////////////////
int createlist_l(linklist &l,int n)
{
linklist p,q;
int i;
printf("input the data:");
q=l;
for(i=0;i<n;i++)
{p=(linklist)malloc(sizeof(lnode));
scanf("%d",&p->data);
p->next=q->next;
q->next=p;
q=p;
}
return ok;
}
最后面几行中有
q->next=p;
q=p;
应该可以了啊,前面的p->next=q->next;有什么含义。盼望解答`````
全部代码如下:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define ok 1
#define error 0
#define overflow 0
typedef struct lnode
{
int data;
struct lnode *next;
}lnode,*linklist;
int initlist_l(linklist &l)
{
l=(linklist)malloc(sizeof(lnode));
if(!l)
exit(overflow);
l->next=NULL;
return ok;
}
////////////////////////////////////////////////
int createlist_l(linklist &l,int n)
{
linklist p,q;
int i;
printf("input the data:");
q=l;
for(i=0;i<n;i++)
{p=(linklist)malloc(sizeof(lnode));
scanf("%d",&p->data);
p->next=q->next;
q->next=p;
q=p;
}
return ok;
}
int traverselist_l(linklist l)
{
linklist p;
p=l->next;
while(p)
{
printf("%d",p->data);
p=p->next;
}
return ok;
}
void main()
{
int n;
linklist l;
initlist_l(l);
printf("输入表的长度:");
scanf("%d",&n);
createlist_l(l,n);
printf("输出数据:");
traverselist_l(l);
}