Multilinked List

Multi-Linked List

A multiply-linked list can be used for maintaining sublists within a larger list of data without having to actually duplicate records or physically store them in separate fiiles. Pointer variables are set up, one for each sublist to be maintained. These are stored within the record structure itself.

Write a program to produce a report listing, separately, all employees holding a particular JobTitle, all employees working in a prticular company Location, and all employees working in a particular Department, for all possible JobTitles, Locations, and Departments. Revise the data contained in the idprsnel.dat file (attached below) before using it as input to your program. The revised employee record (or, node) will have several additional pointer variables for maintaining the lists of interest. In addition, you will neeed the expernal pointers to the beginning of each list, including one for the "master" list of all records in sorted order (by ID number).

The master file is formatted as follows:

ID#: 9 spaces

NAMES: 21 spaces

ADDRESS: 32 spaces

PHONE#S: 30 spaces

JOB TITLE: 8 spaces

LOCATION: 1 space

DEPARTMENT: 5 spaces

ANNUAL SALARY: 7 spaces

LAST PROMOTED: 4 spaces

FIRST EMPLOYED: 4 spaces

Note that you can use the string functions getline and substr as follows (for example):

getline (infile,line);

id = line.substr (0,9);

Alternatively, for a simpler programming project, use the following streamlined data:

007511852 BOND JAMES CLERK B R&D

018647329 KENT CLARK MANAGER B R&D

027602435 KRAMDEN ALICE ANALYST D MIS

045828304 NORTH JERRY DESIGNER D R&D

048111007 OLSEN JIMMY DESIGNER D PROD

053939677 DREW NANCY CLERK C PROD

071918464 STEED JOHN DESIGNER C PROD

081956797 WINE MOSES ANALYST B MIS

096283018 CHAMBERS DIANE MANAGER C PROD

097366399 FAWLTY BASIL ANALYST A PROD

098480250 PETERSON NORM MANAGER A PROD

107908321 WHITE PERRY MANAGER C PROD

109094977 HOLCROFT NOEL MANAGER B PROD

117308423 CHARLES NORA DESIGNER A PROD

129275576 RHODENBARR BERNIE MANAGER C MIS

144936551 MUDD HARRY CLERK B PROD

154574105 MAVERICK BRETT CLERK B R&D

156533413 FLYNN FRANCIS DESIGNER B PROD

164669628 STEELE REMINGTON ANALYST B MIS

165245544 HARDY FENTON MANAGER B R&D

175666707 VADER DARTH MANAGER D MIS

197340858 LANE LOIS MANAGER B PROD

231081163 STREET DELLA CLERK A R&D

243634844 KEATON ALEX CLERK C MIS

250141546 CANNON FRANK MANAGER C MIS

265522806 SPENSER HAWK MANAGER D R&D

279319399 HART JENNIFER DESIGNER A PROD

297000324 MASON PERRY ANALYST C MIS

315551263 HOLMES SHERLOCK ANALYST D R&D

336345414 OHARA SCARLET MANAGER A R&D

337510916 WOLFE NERO CLERK A R&D

351453116 CARTER NICK CLERK D PROD

358928785 KIRK JAMES DESIGNER A PROD

360475339 CHARLES NICK MANAGER B R&D

373603340 SHAYNE MIKE DESIGNER C PROD

382547177 WEISER MARION MANAGER D R&D

406725718 POIROT HERCULE DESIGNER D MIS

412074985 DIAMOND RICHARD CLERK C R&D

412122593 FIELDING DAN CLERK D MIS

422375009 HAVELOCK MICHAEL ANALYST D MIS

426743441 NASHE HAMILTON DESIGNER D R&D

431815949 CARTWRIGHT BEN DESIGNER B MIS

434606028 UNGER FELIX CLERK A PROD

439348245 MAGNUM THOMAS DESIGNER D R&D

454768105 MARTIN ANGEL DESIGNER D PROD

467287118 NORTON EDWARD CLERK B MIS

498634876 POPPINS MARY CLERK D PROD

501620748 BUTLER RHETT ANALYST B PROD

513351904 GUNN PETER CLERK D R&D

513789593 DILLON MATT MANAGER B PROD

519251496 MUNROE JESSICA MANAGER A MIS

525042311 CHAN CHARLIE CLERK C MIS

525416210 IRONSIDE ROBERT DESIGNER A R&D

532859964 HELM MATT CLERK C R&D

547247690 DIPALMA LOUIE DESIGNER A MIS

560874087 GOODWIN ARCHIE ANALYST A MIS

575504962 PERRIN REGINALD CLERK B R&D

583532918 BERGERAC CYRANO ANALYST B MIS

584836738 CARTWRIGHT HOSS ANALYST A R&D

594184602 MCMILLAN SALLY ANALYST C R&D

602407060 TEMPLAR SIMON DESIGNER C MIS

606984917 CLOUSSEAU INSPECTOR ANALYST D MIS

623541383 HOLMES MYCROFT DESIGNER A MIS

629195747 FLETCHER IRWIN MANAGER C R&D

634950378 TANNER EVAN MANAGER D PROD

671920794 RANDALL JOSH ANALYST A R&D

676865001 ROCKFORD JAMES DESIGNER B R&D

678466125 REAGER ALEX CLERK D PROD

686944932 MARLOWE PHILIP CLERK B MIS

739096328 SMALL DAVID ANALYST A PROD

740350623 SCUDDER MATTHEW MANAGER D R&D

742201761 SPADE SAM CLERK D MIS

744146916 HARRISON CHIP ANALYST D PROD

750855555 WALKER AMOS ANALYST B PROD

751645142 SING HOP ANALYST B MIS

761736932 NORTH PAM ANALYST C PROD

764319959 PEEL EMMA ANALYST C MIS

766688163 QUIXOTE DON ANALYST C R&D

782667746 ED MISTER MANAGER B MIS

783563314 BURKE AMOS CLERK A MIS

796681101 MCGEE TRAVIS DESIGNER D MIS

812815428 HAMMER MIKE CLERK C MIS

815520270 WATSON JOHN CLERK A MIS

847258657 MALONE SAM ANALYST C PROD

853600995 BOURNE JASON DESIGNER C MIS

859673715 ARCHER LEW ANALYST A R&D

875490775 VANCE PHILO DESIGNER C R&D

885034483 SKYWALKER LUKE CLERK A R&D

892369626 BRAGG PETER MANAGER D R&D

897176599 JONES BARNABY ANALYST D PROD

900619229 HOPE MATTHEW CLERK C PROD

909295632 IGNATOWSKI JIM MANAGER B MIS

940476548 DRAKE JOHN ANALYST D R&D

949326445 REDDY JASON ANALYST D MIS

961008182 MARPLE JANE MANAGER A R&D

966456476 MCCOY LEONARD MANAGER A PROD

986141483 CHAMBERS PAT ANALYST D PROD

989000740 TORTELLI CARLA ANALYST B R&D

993610980 MADISON OSCAR DESIGNER A MIS

999410773 KRAMDEN RALPH CLERK C R&D

Part A:

The first part of this problem involves "creation" of the (logical) sublists as part of the master list. The creation algorithm will use the same ADD procedure that will be used to add new employees to the data set when it is updated.

Part B:

The second part of this problem involves updating this master multlinked list. Updates are done when new employees are hired (ADD), when employees leave or are fired (DELETE), and when employees are promoted or transferred to another location and/or department (CHANGE). The updates to be used in testing this program are in the transaction file trans.dat (attached below). To keep things simple, you may assume no errors in the update records.

Use functions, structs, classes, arrays, lists, etc. as appropriate.

Your output from this program might look something like this: