신나게 개발하기

라스트 노드 본문

프로그래밍/C & C++

라스트 노드

Yi,Junho 2010. 4. 7. 11:48


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

typedef struct listNode *node_p;

struct listNode {
        char name[5];
        node_p link;
};

void printList(node_p L)
{
        node_p p;
        printf("\n(");
        p = L;
        while (p != NULL) {
                printf("%s", p->name);
                p = p->link;
                if (p != NULL) printf(", ");
        }
        printf(")\n");
}

node_p addLastNode(node_p L, char *x)
{
        node_p newNode, p;
        newNode = (node_p)malloc(sizeof(struct listNode));
        strcpy(newNode->name, x);
  newNode->link = NULL;
  if ( L == NULL )
  {
   L = newNode;
   return L;
  }
  p = L;
  while ( p->link != NULL)
  {
   p = p->link;
   

  }
  p->link = newNode;
        return L;
}

node_p reverse(node_p L)
{
 node_p p, q, r;
 p = L;
 q = NULL;
 
 while ( p != NULL )
 {
  r = q;
  q = p;
  p = p->link;
  q->link = r;
 }
 L = q;
 return L;
}

void main()
{
        node_p L = NULL;
        char temp[5];

        printf("마지막에 노드로 삽입할 노드 (종료시는 xxx) : ");
        scanf("%s", temp);
        while (strcmp(temp, "xxx")) {
                L = addLastNode(L, temp);
                printf("마지막에 노드로 삽입할 노드 (종료시는 xxx) : ");
                scanf("%s", temp);
        }
  L = reverse(L);
        printList(L);
}

0 Comments
댓글쓰기 폼