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;
}

