1.统计单向链表结点的个数
//统计链表结点个数
int count(linkList* head){//获取头结点
int num=0;
linkList *p;
for(p=head;p!=NULL;p=p->next){//当p->next域为空时,停止遍历
num++;
}
return num;
}
2.统计数据域值为奇数的节点
//统计数据域值为奇数的节点
int countOdd(linkList *head){
int num=0;
linkList *p;
for(p=head;p!=NULL;p=p->next){
if(p->data%2){
num++;
}
}
return num;
}
3.输出尾节点的数据域值
//输出尾节点数据域的值
void printTail(linkList *head){
linkList *p;
for(p=head;p->next;p=p->next);//空循环
printf("%d",p->data);
}
4.输出非空单向链表倒数第二个节点的值
//输出非空单向链表倒数第二个节点的值
void printTailNode(linkList *head){
linkList *p,*q;
for(p=head;p->next;q=p,p=p->next);
printf("%d",q->data);
}
5.逆向输出链表的值(递归实现)
//逆向输出链表的值
void preLink(linkList *head){
if(head==NULL){
return;
}
if(head->next){
preLink(head->next);
}
printf("%d\n",head->data);
}
6.逆序输出非递归实现
略。
7.逆序输出用栈实现
//用栈 ,需要引入<stack>STL库文件
void preLinkNode(linkList *head){
stack<int> stk;
while(head!=NULL){
stk.push(head.data);
head=head->next;
}
while(head!=NULL){
printf("%d\n",stk.top());
stk.pop();
}
}