求链表长度的函数

问题描述:函数:求有头结点单链表长度 大家好,小编来为大家解答以下问题,如何求一个链表的中间节点,求链表长度的时间复杂度为,今天让我们一起来看看吧!

如何用函数获取双向链表长度???

求链表长度的函数的相关图片

int CreateList(LinkList *head)代码的while循环中,加入了一句话:

if (getchar() == '\n') break; // 输入换行时可跳出循环。

新写的int getLength(LinkList head)代码如下:

完整代码为:

#include<stdio.h>。

#include<malloc.h>。

#define ERROR 0。

#define OK 1

typedef int ElemType; /*定义表元素的类型*/。

typedef struct LNode /*线性表的单链表存储*/。

  ElemType data;。

  struct LNode *next;。

}LNode, *LinkList;。

/*创建单链表*/

int CreateList(LinkList *head);。

/*函数定义*/

int getLength(LinkList head);。

/*你的代码将写在此处*/

int CreateList(LinkList *head)。

  LNode *p, *q;。

  int e;

  *head = (LinkList)malloc(sizeof(LNode));。

  if (!*head)

      return ERROR;。

  (*head)->next = NULL;。

  p = *head;

  while (scanf("%d", &e) == 1)。

  {

      if (getchar() == '\n')。

          break; // 回车时跳出循环。

      q = (LNode *)malloc(sizeof(LNode));。

      if (!q)

          return ERROR;。

      q->data = e;。

      q->next = NULL;。

      p->next = q;。

      p = q;

  }

  return OK;

}/*CreateList*/。

int getLength(LinkList head)。

  LNode *p = head;。

  int len = 0;。

  while (p != NULL)。

  {

      ++len;

      p = p->next;。

  }

  return len;

int main()

  LinkList L = NULL;。

  CreateList(&L);。

  printf("%d\n", getLength(L));。

  return 0;

gcc编译通过,望采纳~

pascal中length函数能不能求线性链表长度的相关图片

pascal中length函数能不能求线性链表长度

如果不是循环链表要做以下规定的:

表头的prev指针必须初始化为NULL。

表尾的next指针必须初始化为NULL。

于是计算链表长度可以从表头开始迭代,每次迭代计数加一,当遇到next为NULL时结束迭代,结束之后链表的长度就计算出来了。

新建节点时要养成习惯,prev和next未链接的要赋值为NULL。

实现C语言链表的按位置查找,按值查找和求链表的长度三个算法怎么编啊的相关图片

实现C语言链表的按位置查找,按值查找和求链表的长度三个算法怎么编啊

pascal中length函数只能用于测字符串的长度,不能用于测链表的长度。

java数据结构单链表 求单链表长度的相关图片

java数据结构单链表 求单链表长度

#include <stdio.h>。

#include <malloc.h>。

typedef int DataType;。

typedef struct node {。

DataType data;。

struct node *next;。

}*LinkList,*pNode;。

LinkList CreateList() {。

DataType data;。

LinkList head;。

pNode p;

printf("输入整数(q to quit):");。

head = p = (pNode)malloc(sizeof(struct node)); // 生成头结点。

while(scanf("%d",&data) == 1) {。

p->next = (pNode)malloc(sizeof(struct node));。

p->next->data = data;。

p = p->next;。

printf("输入整数(q to quit):");。

}

p->next = NULL;。

return head;

// 查找指定数据值

int FindData(LinkList head,DataType data) {。

pNode p = head->next;。

if(head == NULL || head->next == NULL) return 0;。

while(p) {

if(p->data == data) return 1; // 找打时返回1。

p = p->next;。

}

return 0; // 没找到返回0。

// 查找指定位置的值(版本1)。

int FindPosition1(LinkList head,int pos,DataType *data) {。

int i = 1;

pNode p = head->next;。

if(head == NULL || head->next == NULL) return 0;。

while(p) {

if(i == pos) {。

*data = p->data;。

return 1; // 找到时,返回1。

}

p = p->next;。

++i;

}

return 0; // 没找到返回0;

// 返回链表的长度

int LengthList(LinkList head) {。

int cnt = 0;

pNode p = head->next;。

if(head == NULL || head->next == NULL) return 0;。

while(p) {

++cnt;

p = p->next;。

}

return cnt;

// 查找指定位置的值(版本2)。

int FindPosition2(LinkList head,int pos,DataType *data) {。

int i = 1;

pNode p = head->next;。

if(head == NULL || head->next == NULL) return 0;。

if(pos < 1 || pos > LengthList(head)) return 0;。

while(p) {

if(i == pos) {。

*data = p->data;。

return 1; // 找到时,返回1。

}

++i;

p = p->next;。

}

return 0; // 没找到返回0;

// 显示链表内容

void ShowList(LinkList head) {。

int cnt = 0;

pNode p = head->next;。

while(p) {

if(cnt && cnt % 10 == 0) printf("\n"); // 每行显示10个数据。

printf("%5d",p->data);。

p = p->next;。

++cnt;

}

if(cnt % 10) printf("\n");。

void FreeMemory(LinkList head) {。

pNode q,p = head;。

while(p) {

q = p;

p = q->next;。

free(q);

}

int main() {

int pos;

DataType x;

printf("创建链表A。\n");。

LinkList A = CreateList();。

ShowList(A);

printf("表A的长度是:%d\n",LengthList(A));。

printf("按位置查找,请输入位置:");。

fflush(stdin);。

scanf("%d",&pos);。

if(FindPosition2(A,pos,&x)) printf("位置%d的数据是%d\n",pos,x);。

else printf("%d:数据错误,查找失败。\n",pos);。

FreeMemory(A);。

return 0;

下列代码用C语言求单链表的长度为什么不对?

是这样的,你先去确定一下是不是head==A。而不是head.nextNode==A。

如果是的话,那5就是对的。从A开始算,只有5个。到E后是空的,不会再循环。

你可能理解成了head.nextNode==A。

按我的理解,head和A这两个引用的是同一个对象。于是:

while(htemp!=null){//这时候htemp就是A所引用的对象。

len++;//先加1

htemp=htemp.nextNode;//htemp指向B引用的对象。

原文地址:http://www.qianchusai.com/%E6%B1%82%E9%93%BE%E8%A1%A8%E9%95%BF%E5%BA%A6%E7%9A%84%E5%87%BD%E6%95%B0.html

二十字好作文,二十字作文的读后感

二十字好作文,二十字作文的读后感

二年级日记65字,二年级日记65字左右《让座》

二年级日记65字,二年级日记65字左右《让座》

蚂蚁很小作比较的方法写句子,蚂蚁很小用作比较的方法写句子

蚂蚁很小作比较的方法写句子,蚂蚁很小用作比较的方法写句子

任意作文450字-70,任意写一篇作文500字

任意作文450字-70,任意写一篇作文500字

闻rush能舒服多久,闻rush多久可以排干净

闻rush能舒服多久,闻rush多久可以排干净

随笔写景400字-70,随笔景物描写400字

随笔写景400字-70,随笔景物描写400字

随笔写景400字-60,随笔写景400字六年级

随笔写景400字-60,随笔写景400字六年级

随笔写景400字-20,随笔景物描写400字

随笔写景400字-20,随笔景物描写400字

随笔写景400字-40,优秀随笔400字写景

随笔写景400字-40,优秀随笔400字写景

随笔写景400字-50,随笔写景400字六年级

随笔写景400字-50,随笔写景400字六年级

三国志战略版建筑上限详解 - 完整攻略指南 三国志战略版铜矿造币厂攻略 - 升级策略与资源获取指南 三国志战略版赵云和孙权武将专题 - 完整攻略指南 三国志战略版高级工坊 - 专业游戏攻略平台 三国志战略版军屯等级详解 - 军屯升级攻略与资源产出表 三国志战略版7级工坊推荐 - 最强配置与策略指南 三国志战略版冲突机制详解 - 游戏攻略指南 三国志战略版华佗援救技能详解 - 完整攻略指南 三国志战略版战法冲突效果详解 - 游戏攻略指南 三国志战略版怎么增加造币厂 - 造币厂升级攻略大全 三国志战略版八级地速通攻略 - 最快通关阵容与技巧 三国志战略版军屯攻略大全 - 军屯玩法详解与技巧 三国志战略版马超强攻攻略 - 马超最强阵容搭配与技能推荐 三国志战略版造币厂数量上限详解 - 游戏攻略指南 三国志战略版巴蜀城池攻略 - 全面解析巴蜀地区战略要地 三国志战略版声望系统攻略大全 - 声望获取与使用指南 三国志战略版满级名声攻略 - 最全名声提升指南 三国志战略版关妹伤害计算与武将分析 - 游戏攻略专题 三国志战略版盟友迁城攻略指南 - 策略技巧详解 三国志战略版势力值计算器 - 在线计算你的势力值 三国志战略版高级建筑满级攻略 - 完整建筑属性与升级指南 三国志战略版速成其利 - 新手快速成长攻略大全 三国志战略版虚弱效果详解 - 游戏攻略与技巧 三国志战略版武将援救攻略大全 - 完整指南 三国志战略版冲突系统详解 - 战略玩法与攻略指南 三国志战略版声望奖励怎么获得 - 完整攻略指南 三国志战略版初始名声上限详解 - 新手必看攻略 三国志战略版工坊产量计算器 - 最全工坊数据攻略 三国志战略版土地势力值计算器 - 在线计算工具 三国志战略版火烧连营攻略 - 赤壁之战经典战役解析