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;
}
请大侠帮小弟解释一下。感激不尽~~~ 展开
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;
}
请大侠帮小弟解释一下。感激不尽~~~ 展开
3个回答
展开全部
首先,这段代码是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);
}
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);
}
展开全部
首先,开头包含了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<<" "; 表示输出链表节点的数据
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<<" "; 表示输出链表节点的数据
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果接触过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、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 变量中存储的整数输出在屏幕上,后面跟一个空格 ,用于和下一个数分隔开。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询