'삽입함수'에 해당되는 글 2건



typedef struct node* node_pointer;
typedef struct node{
           node_pointer llink;
           element data;
           node_pointer rlink;
};



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


typedef int element;
typedef struct DlistNode{
 element data;
 struct DlistNode* llink;
 struct DlistNode* rlink;
}DlistNode;

void init(DlistNode* phead)
{
 phead->llink=phead;
 phead->rlink=phead;
}

void display(DlistNode* phead)
{
 DlistNode* p;
 for(p=phead->rlink ; p!=phead ; p=p->rlink)
 {
  printf("<---| %x | %d | %x |--->\n",p->llink , p->data, p->rlink);
 }
 printf("\n");
}

void dinsert_node(DlistNode* before , DlistNode *new_node)
{
 new_node->llink = before;
 new_node->rlink = before->rlink;
 before->rlink->llink = new_node;
 before->rlink = new_node;
}
// 삽입함수


 

void dremove_node(DlistNode *phead_node , DlistNode* removed)
{
 if(removed == phead_node) return;
 removed->llink->rlink = removed->rlink;
 removed->rlink->llink = removed->llink;
 free(removed);
}
//삭제함수

main()
{
 DlistNode head_node;
 DlistNode* p[10];
 int i;

 init(&head_node);
 for(i=0 ; i<5 ; i++)
 {
  p[i] = (DlistNode*)malloc(sizeof(DlistNode));
  p[i]->data = i;

  dinsert_node(&head_node,p[i]);
 }
 dremove_node(&head_node,p[4]);
 display(&head_node);
}

블로그 이미지

百見 이 不如一打 요 , 百打 가 不如一作 이다.

,
void insert_node(ListNode** phead , ListNode* p , ListNode* new_node)
{
 if(*phead == NULL)
 {
  new_node->link = NULL;
  *phead = new_node;
 }
 else if ( p == NULL)
 {
  new_node->link = *phead;
  *phead = new_node;
 }
 else
 {
  new_node->link = p->link;
  p->link = new_node;
 }
}
블로그 이미지

百見 이 不如一打 요 , 百打 가 不如一作 이다.

,