순환 링크 구현

주의사항:
  • 순환 링크 에 꼬리 지침 을 설정 합 니 다.링크 를 조작 하 는 과정 에서 꼬리 지침 이 계속 변화 하기 때문에 일부 함수 의 형 삼 에 서 는 머리 지침 을 가리 키 는 지침 을 설치한다.그리고 링크 의 끝 판단 조건 이 q 가 꼬리 지침 과 같 는 지 여부 입 니 다.
  • 전달 하 는 실제 인삼 은 주 소 를 찾 아야 합 니 다
  • 순환 링크 의 장점 은 쌍 링크 합병 과 꼬리 삽입 법 이 간단 하 다 는 것 이다.
  • 링크 를 만 들 때 꼬리 삽입 법 을 사용 합 니 다. 머리 삽입 법 으로 꼬리 지침 을 업데이트 하기 어렵 기 때문에 마지막 꼬리 지침 을 한 번 더 업데이트 해 야 합 니 다. 직접 머리 삽입 법 으로 머리 지침 을 만 들 었 습 니 다. 꼬리 지침
  • 이 아 닙 니 다.
     
    #include
    #include
     
    typedef struct Node
    {
    	int data;
    	struct Node * next;
    }Node, *LinkList;
     
    LinkList Creat();
    void Destroy(LinkList *L);
    void Insert(LinkList *L, int val, int index);
    void Delete(LinkList *L, int index);
    void Traverse(LinkList L);
     
    int main()
    {
    	LinkList L = Creat();
    	Traverse(L);
    	Insert(&L, 1, 5);
    	printf("After inserting is :
    "
    ); Traverse(L); printf("After deleting is :
    "
    ); Delete(&L, 2); Traverse(L); Destroy(&L); Traverse(L); } LinkList Creat() { LinkList L = (LinkList)malloc(sizeof(Node));// L , L int n; L->data = -1; L->next = L;// , ! 。 printf("Please enter the number you want input:(>5)"); scanf_s("%d", &n); printf("input the number:
    "
    ); for (int i = 0; i < n; i++) { LinkList p = (LinkList)malloc(sizeof(Node)); scanf_s("%d", &p->data); p->next = L->next; L->next = p; L = p; } return L;// } void Destroy(LinkList *L) { LinkList q = (*L)->next->next; LinkList p; (*L) = (*L)->next; while (q != (*L)) { p = q->next; free(q); q = p; } (*L)->next = (*L); } void Insert(LinkList *L, int val, int index) { LinkList p = (LinkList)malloc(sizeof(Node)); p->data = val; LinkList q = (*L)->next; for (int i = 1; q != (*L) && i < index; i++) q = q->next; p->next = q->next; q->next = p; if (p == (*L)) (*L) = p; } void Delete(LinkList *L, int index) { LinkList q = (*L)->next, p; for (int i = 0; i < index; i++) q = q->next; p = q->next; q->next = p->next; free(p); } void Traverse(LinkList L) { LinkList q = L->next->next;// while (q != L) { printf("%d->", q->data); q = q->next; } printf("NULL
    "
    ); }

    좋은 웹페이지 즐겨찾기