
楼主你好~
很简单哦
int
count
=
0;
while(p
!=
NULL)
{
p
=
p->next;
count++;
}
这个count就是最终的结点个数(包括头结点)~
请追问~
#include<stdioh>
#include<stdlibh>
typedef struct node
{
int data;
struct node next;
}node;
void count(node l)//计算节点个数,输出所有值
{
int n = 0;
node p = l->next;
while(p)
{
printf("%d ",p->data);
p = p->next;
n++;
}
printf("\n%d\n",n);
}
int main()
{
int e;
//头节点
node head,p,q;
head = (node)malloc(sizeof(node));
head->next = NULL;
p = head;
printf("输入元素,回车结束:");
do{
scanf("%d",&e);
q = (node)malloc(sizeof(node));
q->data = e;
q->next = NULL;
p->next = q;
p = q;
}while(getchar()!='\n');
count(head);
return 0;
}
它的算法思想应该是
1,以一指针指向该叶子结点并向上(父结点)找,把父节点入栈(方便输出路径)
2,把指针指向父节点,重复上面的过程,直到节点的父节点为空
3,依次出栈输出信息,路径就出来了
(注:此二叉树的节点应包括父指针,左右指针,数据域)
就这么多吧! 要学习程序,就得自己尝试写,写多了就会了
还有什么不懂的可以给我留言 !!
struct node n1,n2;//定义两个节点
n1next=&n2;//n1和n2连接起来
n2next=NULL;//n2的下个节点为空
struct node n3;//增加一个节点
n2next=&n3;//n2和n3连接起来
n3next=NULL;//n3的下个节点为空
这样你明白了吗
p->next其实就是(p)next
------------------------------------
用指针表达
struct node n1=( struct node )malloc(sizeof( struct node));//新增一个节点
struct node n2=( struct node )malloc(sizeof( struct node));//再新增一个节点
n1->next=n2;//连接两个节点
n2->next=NULL;//n2的下个节点为空
单链表的头插入: L是头结点, p是插入结点,
假设: 链表结构为 L->A->B...
L->next=NULL; // 这条语句有问题, 头结点插入是不需要这句的, 否则p->next=L->next就都等于null了;p->next=L->next; //p的下个结点指向头结点L的下个结点A, 即:p的下个结点指向原第2个结点A
L->next=p; // 头结点L的下个结点指向p, 即将p插入到L的后面
// 最终结果为: L->P->A->B...
---------------------------------------
单链表的尾插入:L是尾结点,p是插入结点,r为标记末尾结点
假设: 链表结构为 ..A->B->L
L->next=NULL; //末尾结点没有下个结点, 即next指向nullr=L; // r标记末尾结点
p->next=NULL; // p待插入的末尾结点, 同样没有下个结点, next指向null
r->next=p; // 将末尾结点r的下个结点指向p, 即:L下个结点指向p
r=p; // 将r重新指向新的末尾结点p
//最终结果:A->B->L->P
以上就是关于C语言,计算链表中元素节点个个数全部的内容,包括:C语言,计算链表中元素节点个个数、如何用类c语言计算带头结点的单链表中的节点个数、C语言 求二叉树根节点到叶子节点的路径等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)