14 求链表的表长

Posted shanlu0000

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了14 求链表的表长相关的知识,希望对你有一定的参考价值。

 1 /*求表长*/
 2 
 3 
 4 #include<stdio.h>
 5 #include<stdlib.h>
 6 
 7 //链表中节点的结构
 8 typedef struct Link {
 9     int  data;
10     struct Link* next;
11 }link;
12 
13 //链表初始化
14 link* initByTailInsert() {
15     link* phead = NULL;//创建头指针
16     link* first_node = (link*)malloc(sizeof(link));//创建第一个节点
17     //第一个结点先初始化
18     first_node->data = 1;
19     first_node->next = NULL;
20     phead = first_node;//头指针指向第一个节点
21 
22     //尾插入赋值
23     for (int i = 2; i < 5; i++) {
24         link* new_node = (link*)malloc(sizeof(link)); //申请新的结点
25         new_node->data = i;
26         new_node->next = NULL;
27         first_node->next = new_node;  //第一个结点的指针域指向这个新申请的结点
28         first_node = new_node;  //第一个结点后移
29     }
30 
31     printf("头指针指向的值是:%d
", phead->data);//1
32     return phead;  //将指向第一个结点的头指针返回
33 }
34 
35 
36 
37 void showLink(link* phead) {
38     link* tmp = phead;//将头指针赋给tmp,tmp也是一个头指针
39     //只要tmp指针指向的结点的next不是Null,就执行输出语句。
40     while (tmp != NULL) {
41         printf("%d ", tmp->data);
42         tmp = tmp->next;
43     }
44     printf("
");
45 }
46 
47 
48 //求链表的表长
49 int getLinkLength(link* phead) {
50     link* tmp = phead;
51     int len = 0;
52     while (tmp != NULL) {
53         len++;
54         tmp = tmp->next;
55     }
56     return len;
57 }
58 
59 
60 void main() {
61     //初始化链表(1,2,3,4)
62     printf("初始化链表为:
");
63     link* phead = initByTailInsert(); //创建头指针,得到经过初始化后的头指针
64     showLink(phead);
65     printf("表的长度是:%d
", getLinkLength(phead));
66 }

技术图片

 

以上是关于14 求链表的表长的主要内容,如果未能解决你的问题,请参考以下文章

两个链表的第一个公共结点

头插法链表的基本操作:创建空链表,插入结点,遍历链表,求链表长度,查找结点,删除结点

下列函数试图求链式存储的线性表的表长,为啥是错的?

求链表的倒数最后k个节点

PTA 求链表的倒数第m个元素

6-3 求链式表的表长