| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1116 人关注过本帖
标题:创建链表的一个问题
只看楼主 加入收藏
Q309705759
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2005-11-22
收藏
 问题点数:0 回复次数:3 
创建链表的一个问题

创建链表的一个问题:
#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);
}


搜索更多相关主题的帖子: 链表 int lnode linklist overflow 
2005-11-22 10:39
热情依然
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:715
专家分:0
注 册:2005-4-5
收藏
得分:0 
最后面几行中有
q->next=p;
q=p;
应该可以了啊,前面的p->next=q->next;有什么含义。盼望解答`````


关于p->next=q->next;这句是因为本来q->next=NULL;
那么当在q后面插入结点的时候就会将NULL接入到新的结点p->next;
就会变成 p->next = NULL;
那么再加上 q->next = p;
就完成整个插如过程;
q=p这句是移动指针到新插入的结点上

c++/C + 汇编 = 天下无敌
2005-11-22 16:07
cranky
Rank: 1
等 级:新手上路
威 望:1
帖 子:89
专家分:0
注 册:2005-11-21
收藏
得分:0 

首先你要明白你的p,q各是什么?

q是你初始的连表,
p是你新的连表空间,
q.next是空,前面是数据,最后为空
而p是你现在加的空间,你要把p加在q的最后而且让q的最后是空,

就那几条语句,没懂?
p->next=q->next

就是让p.next为空


一个不知道天高地厚,想问什么时候才是满壶水的鬼 --------------半壶水响叮当
2005-11-23 15:12
309705759
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2005-11-6
收藏
得分:0 

明白了,谢谢楼上两位的解答

2005-11-24 12:44
快速回复:创建链表的一个问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022383 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved