Witam, programuje od niedawna i właśnie zabieram się za program na zaliczenie, ale niestety nie mam kompletnie pojęcia jak zacząć i jak zaimplementować listy do mojego programu. Treść programu:

W publikacjach często stosuje się odnośniki do literatury. Ręczne numerowanie jest dość uciążliwe, ale
można do tego zaprząc komputer, który to zrobił szybko, bez marudzenia i bez błędów.
W pliku z tekstem znajdują się odnośniki do literatury zbudowane zgodnie ze schematem:

                                       citenazwa etykiety

Przykładowy plik:

W dziele \cite{sh-hamlet} autor przedstawia sytuację Danii \cite{dania2011}. ...

Opisy bibliograficzne, zawarte w osobnym pliku, mają następującą postać: 

etykieta
imię i nazwisko autora
tytuł

Zakładamy, że imię i nazwisko autora to dwa słowa rozdzielone spacjami. Etykieta może być zbudowana
z liter, cyfr, myślnika, podkreślnika i dwukropka. Poszczególne opisy w pliku oddzielone są pustą linią.
Przykładowy plik:

sh-hamlet
William Shakespeare
Hamlet

dania2011
Jan Florjanowicz
Rocznik Statystyczny 2011

grahmat
Robert Graham
Matematyka konkretna

W wyniku działania programu zostanie utworzony plik wynikowy, który na końcu będzie miał dodany 

akapit o nazwie Bibliografia, w którym będą znajdowały się opisy bibliograficzne dzieł cytowanych w
pliku z tekstem artykułu. Te książki, które nie są cytowane, ale występują w pliku z opisami bibliogra-
ficznymi, nie są umieszczane w bibliografii. Książki w bibliografii są posortowane wg nazwisk autorów.
Książki w bibliografii są ponumerowane. W tekście wynikowym nie pojawiają się znaczniki cite ...,
ale odpowiednie numery w nawiasach kwadratowych.
Przykład pliku wynikowego:

W dziele [2] autor przedstawia sytuację Danii [1]. ...

Bibliografia

[1] Jan Florjanowicz, Rocznik Statystyczny 2011
[2] William Shakespeare, Hamlet

Program  uruchamiany  jest  z  linii  poleceń  z  wykorzystaniem  następujących  przełączników  (kolejność 

przełączników jest dowolna):
-t plik wejściowy z tekstem
-o plik wyjściowy
-b plik z opisami bibliograficznymi

PS. nie zależy mi na tym żeby ktoś dawał mi jakieś gotowce czy coś, tylko potrzebowałbym jakieś porady na start, tym bardziej że jeszcze nie robiłem żadnego programu z wykorzystaniem struktur dynamicznych(wskaźników, list jednokierunkowych). Nie jestem leniem i chętnie podejmę wyzwanie napisania tego programu, tylko na aktualny stan rzeczy nie mam pojęcia jak zacząć.
Temat list i ogólnie struktur dynamicznych jest mi znany teoretycznie, także nie musicie mnie odsyłać do żadnej literatury. Praktyki w tym temacie mi jedynie brakuje.