안뇽 프형들! 이번에는 자료구조 질문이야!
지금 그래프 파트 하고잇는데, 인접 리스트를 이용한 vertex 삽입 관련문제야!

C로 이걸 구현하면


void insert_vertex(GraphType *g, int v)
{
    if ( ((g->n)+1 > MAX_VERTICES ) {
        fprint(stderr, \"err\");
        return;
    }
    g->n++;
}

이렇고,
구조체 그래프노드는 정수, 그래프노드 포인터 로 이뤄져잇고

구조체 그래프타입은 정수, 그래프노드에 대한 포인터배열 로 이뤄져잇엉!(폰으로 다 칠려니까 너무 힘들어서 안 쳣음ㅜㅠ)

어쨋든 insert vertex 함수는 정점의 수가 max_vertices 보다 크면 에러를 내고, n(int 정점의 개수) 을 1 올려주는 기능이 있는데

저기서 int v 는 아무 설명이 없긴 한데 그래프 ADT에서

insert_vertex(g,v) 가  graph g에 vertex v 를 insert 하는 연산이라, 어쨌든 c에서 구현된 것 역시 v라는 정수 이름을 가진 vertex를 만들어주고 vertex의 개수를 늘리는 것으로 이해되

여기서 궁금한건, 비록 책에서는 vertex 의 수는 순차적으로 가정한다고 했음에도 불구하고, 내가 예를 들어

그래프타입의 포인터 *g1을 만들고
Insert_vertex(g1,1) 을 30번 실행 하면
1이라는 이름을 가진 vertex를 30개 만들어내게 되는데 실질적으로 edge랑 link 되지 않았으니 아무것도 없는거라고 생각해도 될것 같아 저 int v 에 의해 생성되는 새로운 데이터는 없으니까

그럼 inser_vertex(g1,1) 을 1번만 실행해도
사실 엣지가 없으니 아무것도 없는 상태라서 위의 30번 실행한 경우랑 차이가 아예 없잖아 - g->n을 제외하면 말이지.
위의 프로그램 상 vertex 개수는 30, 밑의 vertex 개수는 1개
근데 사실상 둘 다 존재하는 vertex의 개수는 링크를 고려 안한다면 각각 1개씩으로 똑같잖아 왜냐면 첫 번째 경우, 1이라는 이름을 가진 vertex의 개수를 30개가 있다는 상황이 가능하려면 별도의 조작이 필요하니까
그럼 이 문제를 해결하려면 결국 조건이 vertex_name배열을 만들어서 함수 상에서 매개변수 int v 의 값이 기존 vertex_name 상의 하나와 같은지 다른지 검사해봐야 하는 거 아냐?

내가 뭘 놓쳐서 이러고잇는지모루겟더ㅜ
조언 환영 꾸짖음 환영!!