郝斌数据结构 25 判断链表是否为空和求链表长度算法的演示
2016-12-21 10:22
274 查看
#include<stdio.h> #include<malloc.h> #include<stdlib.h> #include<stdbool.h> typedef struct Node { int data; //数据域 struct Node *pNext; //指针域 }NODE,*PNODE; //NODE等价于struct Node PNODE等价于struct Node * PNODE creat_list(void); void traverse_list(PNODE); bool is_empty(PNODE pHead); int length_list(PNODE pHead); bool insert_list(PNODE pHead,int pos,int val); bool delete_list(PNODE pHead,int pos,int *del_val); void sort_list(PNODE pHead); int main(void) { PNODE pHead = NULL; //等价于struct Node * pHead = NULL; int len; pHead = creat_list(); //创建一个非循环链表,并将该链表的头结点的地址赋给pHead traverse_list(pHead); if(is_empty(pHead)) printf("链表为空\n"); else printf("链表不为空\n"); len = length_list(pHead); printf("链表的长度为:%d\n",len); return 0; } PNODE creat_list(void) { int i; int len; //用来存放有效节点的个数 int val; //用来临时存放用户输入的结点的值 printf("请输入你需要生成的链表的节点个数:len = "); scanf("%d",&len); PNODE pHead = (PNODE)malloc(sizeof(NODE));//分配了一个不存放数据的头结点 if(pHead == NULL) { printf("内存分配失败,程序终止\n"); exit(-1); } PNODE pTail = pHead; pTail->pNext = NULL; for(i=0; i<len; i++) { printf("请输入第%d个节点的值:",i+1); scanf("%d",&val); PNODE pNew = (PNODE)malloc(sizeof(NODE)); if(pNew == NULL) { printf("内存分配失败,程序终止\n"); exit(-1); } pNew->data = val; pTail->pNext = pNew; pNew->pNext = NULL; pTail = pNew; } return pHead; } void traverse_list(PNODE pHead) { PNODE p = pHead->pNext; while(p != NULL) { printf("%d ",p->data); p = p->pNext; } printf("\n"); } bool is_empty(PNODE pHead) { if(pHead->pNext == NULL) { return true; } else { return false; } } int length_list(PNODE pHead) { int len = 0; PNODE p = pHead->pNext; while(p != NULL) { len++; p = p->pNext; } return len; }
相关文章推荐
- 链表插入和删除,判断链表是否为空,求链表长度算法的,链表排序算法演示——C语言描述
- 【郝斌数据结构自学笔记】25_判断链表是否为空和求链表长度算法的演示
- 【算法之链表(一)】判断单链表中是否有环、环的长度、环的入口节点,单链表的倒数第K个节点等
- 经典算法 | 判断任意长度链表是否有环的O(n)时间,O(1)空间算法
- [算法练习FindLoop]判断单向链表是否存在循环/循环入口/环长度
- 数据结构链表创建,遍历,是否为空,求长度,插入,删除算法的演示
- 算法题 1 判断两条单链表是否交叉 一百度实习笔试题(2012.5.6)
- 算法-判断链表是否有环
- [算法学习]判断链表是否是环结构
- 数据结构和算法设计专题之---判断两个链表是否相交并找出交点
- 数据结构和算法设计专题之---判断单链表中是否有环,环的长度,环的入口节点
- 【算法之链表(二)】判断两个链表是否相交并找出交点
- 判断链表是否为空并且求链表长度
- 【数据结构】C语言判断链表是否为空,计算链表长度及链表排序算法
- 微软算法100道题------判断俩个链表是否相交
- 判断一个单向链表是否有环,算法证明
- 一个长度为N的整形数组,数组中每个元素的取值范围是[0,N-1],写一个算法判断数组中是否存在重复的数字
- 一道不错的算法题-判断链表是否有环
- 每天一算法(判断两个单向链表是否相交)
- 判断链表是否为空、求链表长度、插入新节点、删除节点、链表排序