void display/字母链表的输出* ip=head sum=0 while(p)//当指针不空时循环(仅限于无头结点的情况) Printf( %c",p->data); p-p->next; //让指针不断“顺藤摸瓜 sum++ 讨论:要统计链表中数据元素的个数,该如何改写?
6 {p=head; while (p) //当指针不空时循环(仅限于无头结点的情况) {printf("%c",p->data); p=p->next; //让指针不断“顺藤摸瓜” } } 讨论:要统计链表中数据元素的个数,该如何改写? sum++; sum=0; void display() /*字母链表的输出*/
void main( build( display () 问:上述建立的单链表带头结点吗?
7 void main( ) { build( ); display( ); } 问:上述建立的单链表带头结点吗?
单链表的操作实现 定义单链表结点的结构体如下: typedef struct Node DataType data struct Node next I SLNode 1、初始化 void listinitiate( SLNode**head)/*初始化* {/*如果有内存空间,申请头结点空间并使头指针head指向头 结点* if((head =(SLNode *)malloc(sizeof (sLnode)))== NULL exit(1) (*head)-next=NULL;/*置链尾标记NULL*/
8 二、单链表的操作实现 定义单链表结点的结构体如下: typedef struct Node { DataType data; struct Node *next; }SLNode; 1、初始化 void ListInitiate(SLNode **head) /*初始化*/ { /*如果有内存空间,申请头结点空间并使头指针head指向头 结点*/ if((*head = (SLNode *)malloc(sizeof(SLNode))) == NULL) exit(1); (*head)->next = NULL; /*置链尾标记NULL */ }