This problem involves a linked list where each node stores a
Solution
#include<stdio.h>
 #include<stdlib.h>
 #include<string.h>
 #define SIZE 15
void insert(char[]);
 void display();
 int count(struct listnode*, int);
struct listnode {
    char symbol[SIZE+1];
    struct listnode *next;
 };
struct listnode *head = NULL;
 main(){
    insert(\"a\");
    insert(\"ab\");
    insert(\"abc\");
    insert(\"abcd\");
    insert(\"abcde\");
    printf(\"%d\ \",count(head,3));
 }
 void insert(char symbol[]){
    if(head == NULL){
        head = (struct listnode*)malloc(sizeof(listnode));
        strcpy(head -> symbol,symbol);
        head -> next = NULL;
    }
    else {
        struct listnode *current = head;
        while(current -> next != NULL){
            current = current -> next;
        }
        current -> next = (struct listnode*) malloc(sizeof(listnode));
        strcpy(current->next->symbol,symbol);
        current -> next -> next = NULL;
    }
 }
void display(){
    struct listnode *current = head;
    while(current != NULL){
        printf(\"%s\ \",current->symbol);
        current = current -> next;
    }
 }
int count(struct listnode* p, int maxlen){
    struct listnode *current = p;
    int numofNodes = 0;
    while(current != NULL){
        if(strlen(current->symbol) <= maxlen){
            numofNodes++;
        }
        current = current -> next;
    }
    return numofNodes;
 }


