【郝斌数据结构自学笔记】25_判断链表是否为空和求链表长度算法的演示

原创 2015年11月21日 01:33:18

25_判断链表是否为空求链表长度算法的演示

#include<stdio.h>

#include<malloc.h>

#include<stdlib.h>

 

typedefstruct Node

{

         int data;//数据域

         struct Node * pNext;//指针域

}NODE,*PNODE;//NODE等价于structNode,PNODE等价于struct Node *

//函数声明

PNODEcreate_list(void);

voidtraverse_list(PNODE pHead);

boolis_empty(PNODE pHead);

intlength_list(PNODE);

boolinsert_list(PNODE,int,int);

booldelete_list(PNODE,int,int*);

voidsort_list(PNODE);

 

 

intmain(void)

{

         PNODE pHead=NULL;//等价于structNode *pHead=NULL;

         pHead=create_list();//creat_list()功能:创建一个非循环单链表,并将该链表的头节点的地址付给pHead

         traverse_list(pHead);

         int len=length_list(pHead);

         printf("链表长度是%d\n",len);

 

         if(is_empty(pHead))

                   printf("链表为空!\n");

         else

                   printf("链表不空!\n");

 

         return 0;

}

 

PNODEcreate_list(void)

{

         int len;//用来存放有效节点的个数

         int i;

         int val;//用来临时存放用户输入的节点的值

 

         //分配了一个不存放有效数据的头节点

         PNODEpHead=(PNODE)malloc(sizeof(NODE));

         if(NULL==pHead)

         {

                   printf("分配失败,程序终止!\n");

                   exit(-1);

         }

         PNODE pTail=pHead;

         pTail->pNext=NULL;

         printf("请输入您需要生成的链表节点的个数:len=");

         scanf("%d",&len);

 

         for (i=0;i<len;i++)

         {

                   printf("请输入第%d个节点的值:",i+1);

                   scanf("%d",&val);

 

                   PNODEpNew=(PNODE)malloc(sizeof(NODE));

                   if(NULL==pNew)

                   {

                            printf("分配失败,程序终止!\n");

                            exit(-1);

                   }

                   pNew->data=val;//挂

                   pTail->pNext=pNew;

                   pNew->pNext=NULL;

                   pTail=pNew;

        

         }

         return pHead;

}

 

voidtraverse_list(PNODE pHead)

{

         PNODE p=pHead->pNext;

         while(NULL!=p)

         {

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

                   p=p->pNext;//不连续,不能用p++

         }

         printf("\n");

         return;

}

 

boolis_empty(PNODE pHead)

{

         if(pHead->pNext==NULL)

                   return true;

         else

                   return false;

}

 

intlength_list(PNODE pHead)

{

         PNODE p=pHead->pNext;

         int len=0;

         while(NULL!=p)

         {

                   len++;

                   p=p->pNext;

         }

         return len;

}


版权声明:本文为博主原创文章,未经博主允许不得转载。

如何判断链表有环并计算环的长度

给出题目:检测单链表中是否存在环。 可以遍历这个链表,遍历过的节点标记为Done,如果当目前准备遍历的节点为Done的时候,那么存在环,否则准备检测的节点为Null时,遍历完成,不存在环。 ...
  • sdujava2011
  • sdujava2011
  • 2014年10月02日 20:27
  • 1513

判断单链表中是否有环,找到环的入口节点

判断单链表中是否有环,找到环的入口节点声明 文章可以随意转载,但请注明出处。 文中有一些地方引用了其他文章,但都已标明出处。如有侵犯,可立即删除。 文中有些地方并无冒犯之意,希望提及的博客作者理解。没...
  • u011373710
  • u011373710
  • 2017年01月04日 21:10
  • 1511

数据结构--链表(js版)

JavaScript版的数据结构--链表 链表是由一组节点组成的集合。每个节点都使用一个对象的引用指向它的后继,指向另一个节点的引用叫做链。链表一般有一个头节点。...
  • weixin_35987513
  • weixin_35987513
  • 2016年10月16日 17:39
  • 3144

郝斌数据结构  25 判断链表是否为空和求链表长度算法的演示

#include #include #include #include typedef struct Node { int data; //数据域 str...
  • asty008
  • asty008
  • 2016年12月21日 10:22
  • 216

【郝斌数据结构自学笔记】27-29_链表插入和删除算法的演示_复习

27_如何学习算法自己的一些感想 28_链表插入和删除算法的演示 #include #include #include   typedefstruct Node {          ...
  • NewNicholas
  • NewNicholas
  • 2015年11月21日 01:43
  • 519

郝斌数据结构  28 链表的插入和删除算法的演示

#include #include #include #include typedef struct Node { int data; //数据域 str...
  • asty008
  • asty008
  • 2016年12月21日 15:47
  • 233

郝斌数据结构  24  链表创建和链表遍历算法的演示

#include #include #include typedef struct Node { int data; //数据域 struct Node ...
  • asty008
  • asty008
  • 2016年12月20日 22:28
  • 186

数据结构和算法设计专题之---判断单链表中是否有环,环的长度,环的入口节点

题目: 给定一个单链表,只给出头指针head: 1、如何判断是否存在环? 2、如何知道环的长度? 3、如何找出环的连接点在哪里? 4、带环链表的长度是多少?   解法: 1、对于问...
  • jiangwei0910410003
  • jiangwei0910410003
  • 2014年07月29日 15:35
  • 4196

跟着郝斌学数据结构(03)——链表【基本概念】

typedefine的使用:为了减少书写的麻烦,可以将一个结构体的定义用另外一个名称来代替。 typedefine struct Student { int sid; char[20] nam...
  • xxssyyyyssxx
  • xxssyyyyssxx
  • 2016年05月15日 17:42
  • 540

数据结构 求链表长度

  • 2011年11月19日 21:11
  • 5KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【郝斌数据结构自学笔记】25_判断链表是否为空和求链表长度算法的演示
举报原因:
原因补充:

(最多只允许输入30个字)