데이터 구조 재 미 있 는 문제 - 원 표 공간 에서 링크 의 병합 을 진행 합 니 다.
15317 단어 데이터 구조
1: #include <stdio.h> 2: #include <stdlib.h> 3: 4: /* int ElemType */ 5: typedef int ElemType; 6: 7: /* */ 8: typedef struct node { 9: ElemType data; /* */ 10: struct node *next; /* */ 11: } LNode, *LinkList; 12: 13: /* n , */ 14: LinkList GreatLinkList(int n) { 15: LinkList p, r, list = NULL; 16: ElemType e; 17: int i; 18: 19: for(i = 1; i <= n; i++) { 20: scanf("%d", &e); 21: p = (LinkList)malloc(sizeof(LNode)); 22: p->data = e; 23: p->next = NULL; 24: 25: if(!list) 26: list = p; 27: else 28: r->next = p; 29: 30: r = p; 31: } 32: 33: return list; 34: } 35: 36: /* , e*/ 37: void insertList(LinkList *list, LinkList q, ElemType e) { 38: LinkList p; 39: p = ( LinkList)malloc(sizeof(LNode)); 40: p->data = e; 41: 42: if(!*list) { 43: *list = p; 44: p->next = NULL; 45: } 46: else { 47: p->next = q->next; 48: q->next = p; 49: } 50: } 51: 52: void insertNode(LinkList *q1, LinkList *q2, LinkList *p, LinkList *l2) { 53: if(*q1 == *q2) 54: { 55: (*p)->next = *q2; 56: *l2 = *q2 = *q1 = *p; 57: 58: } 59: else 60: { 61: (*q2)->next = *p; 62: (*p)->next = *q1; 63: (*q2) = (*q2)->next; 64: } 65: } 66: 67: void MergeLink(LinkList l1, LinkList l2 , LinkList *l3) 68: { 69: /* l1,l2 ,l3 */ 70: LinkList p, q1, q2; 71: q1 = q2 = l2; /*l3 l2*/ 72: p = l1; 73: 74: while(p != NULL && q1 != NULL) { 75: if(p->data >= q1->data) { 76: q2 = q1; 77: q1 = q1->next; 78: } 79: else { 80: l1 = l1->next ; 81: insertNode(&q1, &q2, &p, &l2); /* p q2 q1 */ 82: // q2 = q2->next; 83: p = l1; 84: } 85: } 86: 87: if(q1 == NULL) q2->next = p; 88: 89: *l3 = l2; 90: 91: 92: } 93: 94: int main() 95: { 96: ElemType e; 97: LinkList l1, l2, l3, q; 98: 99: printf("Please input the contents of Link1
"); 100: q = l1 = GreatLinkList(1); /* ,q l */ 101: 102: scanf("%d", &e); 103: 104: while(e) /* , */ 105: { 106: insertList(&l1, q, e) ; 107: q = q->next; 108: scanf("%d", &e); 109: } 110: 111: printf("Please input the contents of Link2
"); 112: q = l2 = GreatLinkList(1); /* ,q l */ 113: 114: scanf("%d", &e); 115: 116: while(e) /* , */ 117: { 118: insertList(&l2, q, e) ; 119: q = q->next; 120: scanf("%d", &e); 121: } 122: 123: MergeLink(l1, l2, &l3); /* l2,l2 l3 */ 124: 125: q = l3; 126: 127: printf("The merge of link1 and link 2 is
"); 128: 129: while(q) /* */ 130: { 131: printf("%d ", q->data) ; 132: q = q->next; 133: } 134: }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.