C语言中有关顺序建立链表的疑问?

#include<iostream>usingnamespacestd;structlist{inti;list*next;};intmain(){list*head,*... #include<iostream>
using namespace std;
struct list
{

int i;
list *next;
};

int main()
{
list *head,*p;
int n;
cin>>n; //这是什么意思?

head=p=new list;
cin>>p->i; //这是什么意思?作用又是什么?
n--;
while(n--)
{
p->next=new list;
p=p->next;
cin>>p->i;
}
p->next=NULL;

for(p=head;; p=p->next) //这行代码p=head;; p=p->next中“; ;”是什么意思?

{
cout<<p->i<<" "; //作何解释?

if(p->next==NULL)
break;
}
return 0;
}

请大侠帮小弟解释一下。感激不尽~~~
展开
 我来答
XoriieInpottn
推荐于2016-02-12 · TA获得超过494个赞
知道小有建树答主
回答量:153
采纳率:100%
帮助的人:154万
展开全部
首先,这段代码是C++程序,当然了,并没有直接用到太多C++特性,只是使用了cin、cout之类的对象来简化数据的输入输出。
cin>>n;等效于C语言的scanf("%d", &n);
cin>>p->i;等效于C语言的scanf("%d", &(p->i));,作用就是给链表的某个元素赋值。
for(p=head;; p=p->next)这句就是普通的for循环,;;并不是特殊的运算符,只是没有写循环判断语句,这句等效于for(p=head; true; p=p->next),作用是遍历链表,循环中的
if(p->next==NULL)
break;
保证了链表后面没有元素的时候能够退出循环,注意,如果没有break语句,这个循环将是死循环。
cout<<p->i<<" ";这句等效于C语言的printf("%d ", p->i);就是打印出当前的元素。

这段代码写的不好,那个for循环可以这么写:
for(p=head; p != NULL; p=p->next) {
printf("%d ", p->i);
}
wwylele
2014-08-18 · TA获得超过2523个赞
知道小有建树答主
回答量:1037
采纳率:0%
帮助的人:1092万
展开全部
首先,开头包含了iostream就表明这段代码不是C语言而是C++的,因为C语言标准库里并没有这个头文件。后文中使用的new等等也是C++的语法

cin>>n; 是iostream里定义的一种“语法”,表示从控制台输入n
cin>>p->i; 同理,从控制台输入到p->i,而p->i表示p指向的结构体的成员i,实际就是链表节点的数据

for(p=head;; p=p->next) 这句话:for的标准写法是for(初始化;循环条件;变量前进){},括号中的三个部分在有些情况的可以不写,比如我不需要循环条件(即永远循环,或者在for中间用break跳出循环),那么循环条件那里就空着不写,结果就变成了for(初始化;;变量前进){},视觉上看就是中间出现了个双分号;;
cout<<p->i<<" "; 表示输出链表节点的数据
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ssr3333
2014-08-18 · 超过24用户采纳过TA的回答
知道答主
回答量:49
采纳率:0%
帮助的人:26.4万
展开全部
如果接触过C的话:
1、C++中的 cin>>n 相当于C语言里的 scanf("%d",&n); //从键盘输入一个整数放在变量n里。
2、cin>> p->i //输入一个整数放在链表指针 p 所指向的元素 i 的成员变量中。

3、for(p=head;; p=p->next) {……} for 循环后跟的是(开始状态;继续循环条件;每次循环后的动作)这三项是可以空缺不填的,本例中的循环继续条件没有填,是写在循环体中的:

if(p->next==NULL)
break; //当下一项不存在时,break,跳出循环
4、C++中的 cout<<p->i<<" " 相当于C语言里的 printf("%d ",p->i); //将指针p所指元素的 i 变量中存储的整数输出在屏幕上,后面跟一个空格 ,用于和下一个数分隔开。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式