示例#1
0
文件: list.c 项目: Vifon/linked-list
List listCopy(List source)
{
    List copy = listInit();
    while ((source = listNext(source)))
    {
        listPushBack(copy, source->v);
    }
    return copy;
}
示例#2
0
文件: test.c 项目: arktur04/test_task
//изменяет размер списка до N. Если N меньше текущего размера S, удаляет в конце S - N узлов,
//если N > S, добавляем в конце N - S узлов
//O(n)
void listResize(ListNode** list, size_t n) {
    size_t s = listSize(list);
    if(s <= n) {
        for(size_t i = 0; i < n - s; ++i) {
            listPushBack(list);
        }
    } else {
        for(size_t i = 0; i < s - n; ++i) {
            listPopBack(list);
        }
    }
}
示例#3
0
文件: main.c 项目: senilica/IOOPM
void readTitleFile(sLinkedList* list, FILE* file)
{
  char str[10];
  if(feof(file))
  {
    State = 0;
    return;
  }
  fscanf(file, "%s\n", str);
  if(strcmp(str, "#end") == 0)
  {
    State = 0;
    return;
  }
  int x = 0;
  int y = 0;
  if(str[0] != '#')
  {
    sscanf(str, "%d,%d", &x, &y);
    point* p = createPoint(x, y);
    listPushBack(list, (void*)p);
    free(p);
  }
}
示例#4
0
文件: test.c 项目: arktur04/test_task
int main(void)
{
    ListNode* testList = NULL;
    ListNode* node = listPushBack(&testList);
    node->data = allocData(1);
    printf("test 1\nsize = %u, last id = %i\n", listSize(&testList), getId(listBack(&testList)->data));
    //--------
    for(int i = 0; i < 100; ++i) {
        node = listPushBack(&testList); //->data = allocData(i);
        node->data = allocData(i);
    }
    printf("test 2\nsize = %u, last id = %i\n", listSize(&testList), getId(listBack(&testList)->data));
    //--------
    for(int i = 0; i < 100; ++i) {
        node = listPushFront(&testList);
        node->data = allocData(i);
    }
    printf("test 3\nsize = %u, first id = %i\n", listSize(&testList), getId(listFront(&testList)->data));
    //--------
    for(int i = 0; i < 100; ++i) {
        node = listInsert(listNext(&testList, 50));
        node->data = allocData(i);
    }
    printf("test 4\nsize = %u, id(100) = %i\n", listSize(&testList), getId(listNext(&testList, 100)->data));
    //--------
    listFree(&testList);
    if(listEmpty(&testList))
        printf("test4: list empty\n");
    //--------
    for(int i = 0; i < 100; ++i) {
        node = listPushFront(&testList);
        node->data = allocData(i);
    }
    listErase(&testList, listFront(&testList));
    printf("test 5\nsize = %u, id(0) = %i\n", listSize(&testList), getId(listFront(&testList)->data));
    listErase(&testList, listFront(&testList));
    //--------------
    listEraseRange(&testList, listNext(testList, 10), listNext(testList, 20));
    node = testList;
    for(int i = 0; i < 30; ++i) {
        printf("id(%d) = %d\n", i, ((ListData*)(node->data))->id);
        node = node->next;
    }
    printf("test 6\nsize = %u, id(10) = %i\n", listSize(&testList), getId(listFront(&testList)->data));
    //--------------
    listPopBack(&testList);
    printf("test 7\nsize = %u, id(back) = %i\n", listSize(&testList), getId(listBack(&testList)->data));
    //--------------
    listPopFront(&testList);
    printf("test 8\nsize = %u, id(front) = %i\n", listSize(&testList), getId(listFront(&testList)->data));
    //--------------
    listResize(&testList, 10);
    printf("test 9\nsize = %u, id(back) = %i\n", listSize(&testList), getId(listBack(&testList)->data));
    //--------------
    listResize(&testList, 20);
    node = testList;
    for(int i = 0; i < 20; ++i) {
        node->data = allocData(i);
        node = node->next;
    }
    printf("test 10\nsize = %u, id(back) = %i\n", listSize(&testList), getId(listBack(&testList)->data));
    return 0;
}