Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Data File: “p1arts”.txt” Assignment: Use an array of linked list to process the

ID: 3788580 • Letter: D

Question

Data File:     “p1arts”.txt”

Assignment:

Use an array of linked list to process the data file to produce the output similar to the following: Name the output file “p3artists_arts.txt”.

Each artist will occupy one row of the array. (As shown in the table : record no. 50 has all the arts next to it)

Try to design the structure of the first node. In addition to “artistID” and “next” fields, what else should it contain

Artist ID

Artist Name

Art ID

Art Title

Appraised Value

50

Morgan

1001

Red Rock Mountain

18000

1028

Tired Cowboy

4700

1054

Snake Charmer

4500

1068

Moonlight

9750

1069

Renaissance

5500

1113

Shadow House

5500

1114

Storytelling at the Campfire

18000

52

Novarre

1002

Offerings

10000

p1arts.txt:

1001   Red Rock Mountain   50   18000
1002   Offerings    52   10000
1003   Spring Flowers   12   2400
1004   Seeking Shelter   64   52000
1005   The Hang   18   8000
1006   House Remembered   32   700
1007   Homage to the Ancestors   82   1200
1008   End of the Path   26   1900
1009   Amen   28   3000
1010   Untitled (land with adobe)   71   800
1011   Eve   19   975
1012   Man on Horseback   74   8000
1013   Superstitions   3   78000
1014   Plenty   45   500
1015   Punch   46   10000
1016   Untitled   65   6000
1017   Brittlecone   6   1300
1018   Mountain Scene   8   2500
1019   The White Heart   61   9300
1020   Untitled (Man holding coat)   73   3000
1021   Bead Wall   3   14000
1022   The Cowboy   69   4200
1023   Shooting the Rapids   47   1300
1024   Spirit and Nature   48   592
1025   Profile of a Woman   68   625
1026   Untitled (couple)   66   4000
1027   Mountain Climber   47   4700
1028   Tired Cowboy   50   4700
1029   Horseshoe Falls   31   15000
1030   Ash Bench   28   13000
1031   Inside/Out   34   3500
1032   Rising Sun   42   2000
1033   Untitled (Woman abstract)   77   2500
1034   Beaver Pole Jumble   3   28000
1035   Nature/Nurture   47   1300
1036   Blackhawk   5   25500
1037   Floating World   21   2350
1038   Spring Flowers   1   800
1039   Treachery   14   20000
1040   Night on the Praire   47   1300
1041   Night Version   29   3800
1042   Coffee on the Trail   2   7544
1043   Creosote Bushes   28   18000
1044   Mexican Fiesta   43   14000
1045   Leaf Patterns   38   2100
1046   Immediate Gratification   33   1500
1047   Medicine Man   44   2500
1048   Comfy Chair   57   800
1049   Buttercup with Red Lip   7   400
1050   Cattle Ranch   1   10000
1051   Night Version   36   7000
1052   American Rodeo   16   3500
1053   Blue Eyed Indian   6   40000
1054   Snake Charmer   50   4500
1055   Starlit Evening   9   9500
1056   Cavalry Is Coming   6   1900
1057   Untitled   66   4500
1058   The Gathering   60   250
1059   Dwelling   17   16000
1060   Story Sticks   42   650
1061   Untitled Mural   78   3520
1062   Cowboy and Saddle   41   18000
1063   Asleep in the Garden   3   110000
1064   Spirit Columns   51   7000
1065   Moonlite    47   1300
1066   Untitled (still life)   76   19500
1067   Owl in Flight   49   7000
1068   Moonlight   50   9750
1069   Renaissance   50   5500
1070   Beginnings   4   27500
1071   Ride the Rapids   79   300
1072   Funnel   24   4500
1073   Dancing in the Light   15   4000
1074   Storm on the Rise   55   8000
1075   Western Boots and Spurs   6   6000
1076   Ride the Bronco   79   1500
1077   Bull Riding   6   5200
1078   Chuckwagon   28   32000
1079   Carrying the Mail   62   8000
1080   The Dust Behind   59   18000
1081   Coming Under Fire   13   650
1082   Spring Flowers   29   20000
1083   Untitled   64   2500
1084   Crossing the Platt River   23   2200
1085   Traces   63   20000
1086   Untitled (desert landscape)   67   18000
1087   Three Woman   81   20000
1088   Lessons   37   3700
1089   Life Lessons   53   4125
1090   Off the Grid   11   8000
1091   Stone Palette   54   11500
1092   Dressing Up   47   1300
1093   Antelopes    62   12500
1094   Life Is Sweet   39   25000
1095   The Spirit   61   20000
1096   Ceremonial Sticks   10   15000
1097   Untitled (Sea)   75   2800
1098   Sweet Project   56   592
1099   Watch That Rattler   20   900
1100   Hungry Cowboys   38   750
1101   The Red Door   58   10000
1102   Crying Hats   14   10000
1103   Trail End   1   8000
1104   Untitled    70   1800
1105   Meteor Show   80   10000
1106   Horse Corral   40   12500
1107   Striking It Rich   35   1750
1108   Untitled Mural   77   400
1109   Friends   22   16000
1110   Three Sisters   62   6500
1111   Untitled (man and crucifix)   72   3200
1112   Dark Canyon   27   8000
1113   Shadow House   50   5500
1114   Storytelling at the Campfire   50   18000
1115   Starry Night   25   8500
1116   Apache Warrior   30   23000

p1artists.txt:

1   Acconci
2   Ames
3   Aserty
4   Baron
5   Battenberg
6   Bindner
7   Blain
8   Blum
9   Budd
10   Cardenas
11   Carpenter
12   Chico
13   Colvin
14   Cox
15   Cridler
16   Curtis
17   Dawson
18   DiGrigoro
19   Dill
20   Edwards
21   Fleming
22   Fratt
23   Garber
24   Garin
25   Giama
26   Gilhooly
27   Gonzales
28   Guys
29   Hamend
30   Higgins
31   Hofmann
32   Ibe
33   Indiana
34   Ingraham
35   Irvin
36   Kerrihard
37   Kollasch
38   Kritz
39   Lerman
40   Long
41   Lowney
42   Lundquist
43   Lutes
44   Maglich
45   McGraw
46   McIver
47   Meglech
48   Metz
49   Miller
50   Mogan
51   Motherwell
52   Novarre
53   Odiezma
54   Ortega
55   Parker
56   Penn
57   Pierobon
58   Prinzen
59   Quiroz
60   Rath
61   Reed
62   Rissman
63   Rogers
64   Roman
65   Schenck
66   Scherzel
67   Scholder
68   Senior
69   Shenal
70   Statom
71   Swartz
72   Tidwell
73   Turrell
74   Udinotti
75   Van Coller
76   Waid
77   Werner
78   Wittner
79   Wright
80   Xie
81   Yasami
82   Zischke

Artist ID

Artist Name

Art ID

Art Title

Appraised Value

50

Morgan

1001

Red Rock Mountain

18000

1028

Tired Cowboy

4700

1054

Snake Charmer

4500

1068

Moonlight

9750

1069

Renaissance

5500

1113

Shadow House

5500

1114

Storytelling at the Campfire

18000

52

Novarre

1002

Offerings

10000

Explanation / Answer

// As file format is not completely defined I have hard coded value of strings specified in the code to print

// If format was fixed or properly delimited then it can easily be parsed to first get a mapping of artistid to its ame

// And then similarly we can parse other file to get a maping of each artist id with art.

// Here is the code with all node structure and linkedlist logic in c

#include <stdio.h>
#include <stdlib.h>

// art node
struct art
{
int artId;
char *title;
int value;
struct art *next;
};

// Artist node
struct artist
{
int artistId;
char *name;
struct artist *next;
struct art *a;
};

// Create and push new art node at front of current art linked list
void pushArt(struct art** head_ref, int artId, char *title, int value)
{
struct art* art_node = (struct art*) malloc(sizeof(struct art));

art_node->artId = artId;
art_node->value = value;
art_node->title = title;
art_node->next=(*head_ref);
(*head_ref) = art_node;
}

// create and push a new artist node in the existing node
void push(struct artist** head_ref, int artistId, char *name, int artId, char *title, int value)
{
struct artist* new_node = (struct artist*) malloc(sizeof(struct artist));

struct art* art_node = (struct art*) malloc(sizeof(struct art));

art_node->artId = artId;
art_node->value = value;
art_node->title = title;
art_node->next=NULL;

new_node->artistId = artistId;
new_node->name = name;
new_node->a = art_node;

new_node->next = (*head_ref);
(*head_ref) = new_node;
}

// Insert a new artist in artist list. If it is existing then just add art node in art list
void insertArtist(struct artist** head_ref, int artistId, char *name, int artId, char *title, int value)
{
struct artist* node = *head_ref;
while (node != NULL && (node->artistId != artistId))
{
node = node->next;
}

if (node == NULL)
{
push(head_ref, artistId, name, artId, title, value);
}
else
{
pushArt(&node->a, artId, title, value);
}
}


// This function prints contents of art linked list
void printArt(struct art *node)
{
while (node != NULL)
{
printf("%d %s %d ", node->artId, node->title, node->value);
node = node->next;
}
}


// This function prints contents of artist list
void printArtist(struct artist *node)
{
while (node != NULL)
{
printf("%d %s ", node->artistId, node->name);
printArt(node->a);
printf(" ");
node = node->next;
}
}


int main()
{

struct artist* head = NULL;

insertArtist(&head, 52, "Novarre", 1002, "Offerings", 10000);

insertArtist(&head, 50, "Morgan", 1114, "Storytelling at the Campfire", 18000);
insertArtist(&head, 50, "Morgan", 1113, "Shadow House", 5500);
insertArtist(&head, 50, "Morgan", 1069, "Renaissance", 5500);
insertArtist(&head, 50, "Morgan", 1054, "Snake Charmer", 4500);
insertArtist(&head, 50, "Morgan", 1028, "Tired Cowbow", 4700);
insertArtist(&head, 50, "Morgan", 1001, "Red Rock Mountain", 18000);
insertArtist(&head, 50, "Morgan", 1068, "Moonlight", 9750);

printArtist(head);

return 0;
}