int main(int argc, char* argv[]) { assert(argc == 3 && "Please input 'length of array' and 'max valur' in argv"); srand(time(NULL)); int len=atoi(argv[1]); int maxVal=atoi(argv[2]); int m=rand()%maxVal+1, n=rand()%maxVal+1; if(m>n) swap(&m, &n); node *head=(node*)malloc(len*sizeof(node)); assert(head != NULL && "malloc error"); /* create test case */ head = createArray(head, len, maxVal); printf("Origin list:\n"); printList(head, len); printf("Reverse between %d %d:\n",m,n); head = reverseBetween(head, m, n); printList(head,len); /* release the memory */ freeList(head); return 0; }
int main() { List *node; List *head; List *curNode=NULL; int m,n; for(int i=0; i<LENGTH; i++) { node=(List*)malloc(sizeof(List)); node->val=i+1; node->next=NULL; if(curNode==NULL) { head=curNode=node; } else { curNode->next=node; curNode=curNode->next; } } print_list(head); scanf("%d %d",&m,&n); if(1<=m && m<=n && n<=LENGTH) { head=reverseBetween(head,m,n); print_list(head); } free(head); return 0; }
int main(){ ListNode* node1 = new ListNode(3); ListNode* node2 = new ListNode(5); node1->next = node2; ListNode* head = reverseBetween(node1,1,2); }
int main(){ int arr[] = {1, 2, 3, 4, 5}; ListNode* l = create_list(arr,sizeof(arr)/sizeof(arr[0])); l = reverseBetween(l,1,5); while(l){ printf("%d ", l->val); l = l->next; } printf("\n"); return 0; }
void test_reverseBetween() { { int a[] = { 1, 2, 3, 4, 5 }; ListNode *p1 = createList(a, sizeof(a) / sizeof(a[0])); printList(p1); ListNode *p = reverseBetween(p1, 2, 4); printList(p); printf("-----------------------\n"); } { int a[] = { 1, 2, 3, 4, 5 }; ListNode *p1 = createList(a, sizeof(a) / sizeof(a[0])); printList(p1); ListNode *p = reverseBetween(p1, 3, 4); printList(p); printf("-----------------------\n"); } { int a[] = { 1, 2, 3, 4, 5 }; ListNode *p1 = createList(a, sizeof(a) / sizeof(a[0])); printList(p1); ListNode *p = reverseBetween(p1, 1, 5); printList(p); printf("-----------------------\n"); } { int a[] = { 1, 2, 3, 4, 5 }; ListNode *p1 = createList(a, sizeof(a) / sizeof(a[0])); printList(p1); ListNode *p = reverseBetween(p1, 1, 3); printList(p); printf("-----------------------\n"); } }
int main() { int n, a, b; int arr[N]; while (~scanf("%d %d %d", &n, &a, &b)) { int i; for (i = 0; i < n; ++i) { scanf("%d", &arr[i]); } struct ListNode * head = convert_to_list(arr, n); print_list(head); head = reverseBetween(head, a, b); print_list(head); free_list(head); } }
ListNode *reverseKGroup(ListNode *head, int k) { ListNode *fakedHead = new ListNode(-1); fakedHead->next = head; ListNode *idx = fakedHead; for(int i = 0; idx != NULL;i++) { if(i != 0 && i%k == 0) { idx = idx->next; head = reverseBetween(head, i-k+1, i); continue; } idx = idx->next; } return head; }
int main(){ ListNode *n1 = new ListNode(1); ListNode *n2 = new ListNode(2); ListNode *n3 = new ListNode(3); ListNode *n4 = new ListNode(4); ListNode *n5 = new ListNode(5); n1->next = n2; n2->next = n3; n3->next = n4; n4->next = n5; n5->next = NULL; printList(n1); n1 = reverseBetween(n1, 2,5); printList(n1); return 0; }
int main() { int arr[] = {1,2,3,4,5}; ListNode *head = init_list(arr, 5); print_list(reverseBetween(head,1,4)); return 0; }
int main() { ListNode *head = buildTestcase(); printList(reverseBetween(head,2,2)); return 0; }