c语言问题6

1.结构体可以嵌套定义,但不能递归定义,那么递归定义是怎么样的2.结点是是怎么样的3.没有指向附加头结点的头指针为什么是变化的4.当有附加头结点,为什么条件(head->... 1.结构体可以嵌套定义,但不能递归定义,那么递归定义是怎么样的
2.结点是是怎么样的
3.没有指向附加头结点的头指针为什么是变化的
4.当有附加头结点,为什么条件(head->next==null)成立时,单链表为空
展开
 我来答
haixin1027
2011-02-18 · TA获得超过116个赞
知道小有建树答主
回答量:149
采纳率:0%
帮助的人:0
展开全部
1:结构体的成员可以是另一个结构体,这就叫结构体的嵌套。比如:
struct segment {
struct complex_struct start;
struct complex_struct end;
};
下面的BS_213是递归,是定义成自己本身的一个结构体,本身的结构体又定义了一个本身的结构体,这样下去就是个无限递归了。可以这样写,但实际中是没有什么用处的。
Struct Node
{public:
int a;
Node BS_213;};
2:在C语言中,链表中每一个元素称为“结点”,每个结点都应包括两个部分:一为用户需要用的实际数据;二为下一个结点的地址,即指针域和数据域。
3:链表有一个“头指针”,因此通过“头指针”可以按顺序往下找到链表中的任一结点,如果不提供“头指针”,则整个链表都无法访问,没有研究的意义。你说的变化应该是从第二个结点向前推“头指针”,因为你的链表都无法访问,第二个结点也在变,自然第一个结点也在变。
4:链表的最后一个结点不指向其他结点,称为“表尾”,它的地址部分存放一个“NULL”(表示“空地址”)。如果你head->next==null,表示你把头指针指向了一个空地址,直接让头指针和表尾相连接,这个链表不能存储任何数据,当然是空了。
意法半导体(中国)投资有限公司
2023-06-12 广告
单片机,单片微型计算机。它是把中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、输入/输出端口(I/O)等主要计算机功能部件都集成在一块集成电路芯片上的微型计算机。单片机具有性能高、速度快、体积小、价格低、稳定可靠、应用... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
枫夜无语
2011-02-17
知道答主
回答量:13
采纳率:0%
帮助的人:0
展开全部
4因为head->next指向的下一个节点内容为NULL的话,说明什么也没有,无一个数据,所以单链表为空
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mdmmdm2
2011-02-17 · TA获得超过414个赞
知道小有建树答主
回答量:209
采纳率:0%
帮助的人:92.3万
展开全部
递归定义就是在结构体中,又用自己定义自己。如:
struct mySTRUCT{
int a;
int b;
Struct yourSTRUCT{
float f1;
float f2;
}
}
就是嵌套定义,因为里面的结构体和自己是完全不同的。当然yourSTRUCT定义也可以写在外面。
但如果是下面这样就是嵌套定义了,因为里面用自己再定义自己的成员变量。
struct mySTRUCT{
int a;
int b;
mySTRUCT mys;
}

结点的问题比较含糊,我估计问题是和二叉树这样的数据结构有关(链表是类似的数据结构),以下回答都以此假设为前提。二叉树上的每个元素可以称为是一个节点。
没有指向具体节点的指针不是变化的,而是随着程序算法对二叉树的遍历,不断指向不同的节点,这个和指针变量有关,比较复杂,短时间不容易讲清楚。

显然,二叉树或链表数据结构,到最后一个元素,其指向下一个元素的指针变量当然是null,以表示数据结构到了末尾。就像字符串以NULL结尾一样。只是一个约定而已,因为NULL指针不会指向任何一个有用的地址,不会导致程序崩溃。如果遍历程序在搜寻第一个节点时就发现NULL,当然这个二叉树或链表是空的啦。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lcwvn98
2011-02-18 · TA获得超过865个赞
知道答主
回答量:131
采纳率:0%
帮助的人:0
展开全部
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void main()
{ FILE *fp6;
int i=0;
char str[][20]=;
char s[20];
if((fp6=fopen("e:\\file9_6.dat", "w"))==NULL)
{ printf("%s不能打开!\n","file9_6.dat");
exit(1);
}
while(i<4)
{
fwrite( str[i] , 20 ,1,fp6);
i++;
}
fclose(fp6);
if((fp6=fopen("e:\\file9_6.dat", "r" ))==NULL)
{ printf("%s不能打开!\n","file9_6.dat");
exit(1);
}
fread( s , 20 ,1,fp6);
while(!feof(fp6))
{ printf("%s\n",s);
fread( s , 20 ,1,fp6);
}
fclose(fp6);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式