#include #include #include struct node { int rollno; char name[50]; struct node *next; }; struct node *createNode(int rollno, char name[]) { struct node *newNode = (struct node *)malloc(sizeof(struct node)); newNode->rollno = rollno; strcpy(newNode->name, name); newNode->next = NULL; return newNode; } struct node *insertPresident() { int roll; char name[50]; printf("Enter President Roll No and Name:\n"); scanf("%d", &roll); scanf("%s", name); struct node *president = createNode(roll, name); return president; } struct node *insertSecretary() { int roll; char name[50]; printf("Enter Secretary Roll No and Name:\n"); scanf("%d", &roll); scanf("%s", name); struct node *secretary = createNode(roll, name); return secretary; } void insertMember(struct node *head) { if (head == NULL) { printf("Club not created yet!\n"); return; } int roll; char name[50]; printf("Enter Member Roll No and Name:\n"); scanf("%d", &roll); scanf("%s", name); struct node *member = createNode(roll, name); struct node *temp = head; while (temp->next->next != NULL) { // stop before secretary temp = temp->next; } member->next = temp->next; temp->next = member; printf("Member added successfully!\n"); } void display(struct node *head) { if (head == NULL) { printf("Club not created yet!\n"); return; } struct node *temp = head; printf("\nClub Members:\n"); while (temp != NULL) { printf("%d\t%s\n", temp->rollno, temp->name); temp = temp->next; } } int countMembers(struct node *head) { int count = 0; struct node *temp = head; while (temp != NULL) { count++; temp = temp->next; } return count; } struct node *deletePresident(struct node *head) { if (head == NULL) { printf("No President to delete!\n"); return NULL; } struct node *temp = head; head = head->next; free(temp); printf("President deleted successfully!\n"); return head; } struct node *deleteSecretary(struct node *head) { if (head == NULL || head->next == NULL) { printf("No Secretary to delete!\n"); return head; } struct node *temp = head; while (temp->next->next != NULL) { temp = temp->next; } free(temp->next); temp->next = NULL; printf("Secretary deleted successfully!\n"); return head; } // ✅ Delete specific member (by PRN) struct node *deleteMember(struct node *head, int roll) { if (head == NULL) { printf("Club not created yet!\n"); return NULL; } struct node *temp = head; struct node *prev = NULL; // Cannot delete president or secretary using this function if (head->rollno == roll) { printf("Cannot delete the President using this option!\n"); return head; } // Traverse until second last (avoid deleting secretary) while (temp->next != NULL && temp->next->next != NULL) { if (temp->next->rollno == roll) { struct node *del = temp->next; temp->next = del->next; free(del); printf("Member deleted successfully!\n"); return head; } temp = temp->next; } printf("Member not found or is Secretary!\n"); return head; } struct node *mergeClubs(struct node *head1, struct node *head2) { if (head1 == NULL) { printf("Club 1 not created!\n"); return NULL; } if (head2 == NULL) { printf("Club 2 not created!\n"); return head1; } struct node *temp = head1; while (temp->next != NULL) { temp = temp->next; } temp->next = head2; printf("\nClubs merged successfully!\n"); return head1; } int main() { struct node *head1 = NULL, *head2 = NULL; struct node *president, *secretary; int choice, c, roll; printf("\n=== CLUB MANAGEMENT SYSTEM ===\n"); while (1) { printf("\nMenu:\n"); printf("1. Create Club 1\n"); printf("2. Create Club 2\n"); printf("3. Insert Member\n"); printf("4. Display Club\n"); printf("5. Count Members\n"); printf("6. Delete President\n"); printf("7. Delete Secretary\n"); printf("8. Delete Member\n"); printf("9. Merge Clubs\n"); printf("10. Exit\n"); printf("Enter your choice: "); scanf("%d", &choice); switch (choice) { case 1: president = insertPresident(); secretary = insertSecretary(); president->next = secretary; head1 = president; printf("Club 1 created successfully!\n"); break; case 2: president = insertPresident(); secretary = insertSecretary(); president->next = secretary; head2 = president; printf("Club 2 created successfully!\n"); break; case 3: printf("Enter which club (1 or 2): "); scanf("%d", &c); if (c == 1) insertMember(head1); else if (c == 2) insertMember(head2); else printf("Invalid club choice!\n"); break; case 4: printf("Enter which club (1 or 2): "); scanf("%d", &c); if (c == 1) display(head1); else if (c == 2) display(head2); else printf("Invalid club choice!\n"); break; case 5: printf("Enter which club (1 or 2): "); scanf("%d", &c); if (c == 1) printf("Total Members in Club 1: %d\n", countMembers(head1)); else if (c == 2) printf("Total Members in Club 2: %d\n", countMembers(head2)); else printf("Invalid club choice!\n"); break; case 6: printf("Enter which club (1 or 2): "); scanf("%d", &c); if (c == 1) head1 = deletePresident(head1); else if (c == 2) head2 = deletePresident(head2); else printf("Invalid club choice!\n"); break; case 7: printf("Enter which club (1 or 2): "); scanf("%d", &c); if (c == 1) head1 = deleteSecretary(head1); else if (c == 2) head2 = deleteSecretary(head2); else printf("Invalid club choice!\n"); break; case 8: printf("Enter which club (1 or 2): "); scanf("%d", &c); printf("Enter Member Roll No to delete: "); scanf("%d", &roll); if (c == 1) head1 = deleteMember(head1, roll); else if (c == 2) head2 = deleteMember(head2, roll); else printf("Invalid club choice!\n"); break; case 9: if (head1 == NULL || head2 == NULL) { printf("Both clubs must be created before merging!\n"); } else { head1 = mergeClubs(head1, head2); printf("Merged Club:\n"); display(head1); } break; case 10: exit(0); default: printf("Invalid choice!\n"); } } return 0; }