c++怎么输出链表长度

Jun_rookie 2019-05-27 01:22:42
#include<stdio.h> #include<stdlib.h> typedef struct Lnode //构建结点结构体 { int data; struct Lnode *next; }Lnode; void Linklist(Lnode *head) //头插法建立链表 { head=(Lnode*)malloc(sizeof(Lnode)); head->next=NULL; //头结点 Lnode *p; //int n=5; for(int i=0;i<5;i++) //生成n个新结点 { p=(Lnode*)malloc(sizeof(Lnode)); //申请新的空间 printf("input a number:\n"); scanf("%d",&p->data); p->next=head->next; head->next=p; } } int Length(Lnode *head) //求链表长度 { int c=0; Lnode *S=head->next; // while(S!=NULL) { c++; S=S->next; //向下一个结点移动 } return c; } void main() //主函数 { int count; Lnode *L; Linklist(L); count=Length(L); printf("%d\n",count); }
...全文
1871 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Italink 2019-05-27
  • 打赏
  • 举报
回复
指针用法的问题,需要修改head(LNode*)的值,函数形参需要用LNode**

#include<stdio.h>
#include<stdlib.h>
typedef struct Lnode //构建结点结构体
{
int data;
struct Lnode* next;
}Lnode;

void Linklist(Lnode** head) //头插法建立链表
{
*head = (Lnode*)malloc(sizeof(Lnode));
(*head)->next = NULL; //头结点
Lnode* p;
//int n=5;

for (int i = 0; i < 5; i++) //生成n个新结点
{
p = (Lnode*)malloc(sizeof(Lnode)); //申请新的空间
printf("input a number:\n");
scanf("%d", &p->data);

p->next = (*head)->next;
(*head)->next = p;
}
}
int Length(Lnode* head) //求链表长度

{
int c = 0;
Lnode* S = head->next; //

while (S != NULL)
{
c++;
S = S->next; //向下一个结点移动
}
return c;
}

void main() //主函数
{
int count;
Lnode* L=NULL;
Linklist(&L);
count = Length(L);
printf("%d\n", count);
}
Jun_rookie 2019-05-27
  • 打赏
  • 举报
回复
为什么我输入5个数之后,显示屏上没有没有出来5就过了

64,651

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧