我在C中有一个编程问题,我试图在其中设计一个List并在给定索引处添加一个元素。

这是我的insertElement方法:

ListElement* getNextElement(ListElement *listElement){
    return listElement->nextElement;
}

 /* Insert a given element at the specified index in a specified list. Shifts
 *  all other elements to the right, increasing their index by 1.
 *  Requires 0 <= index <= listSize(), otherwise the element should not be inserted.
 */
void insertElement(List *list, ListElement *listElement, int index) {
    ListElement* tempElement = list->headElement;
    int count = 0;
    while (tempElement != NULL) {
        if (count == index) {
        }
        tempElement = getNextElement(tempElement);
        count++;
    }
}


但是我实际上不知道如何移和插入元素。

这是我尝试插入的方法:

int main() {
    ListElement* newElement = malloc(sizeof(ListElement));
    insertElement(&myList, newElement, 1);
    exit(EXIT_SUCCESS);
}


有人可以帮我吗?提前致谢。

最佳答案

链表的优点在于,与数组不同,您无需移动或移动任何内容即可进行插入。

假设您的列表是A->C,并且您想在B之后插入A以给出A->B->C


A->nextElement设置为C;需要改变。
B->nextElement未设置;需要改变。


您应该能够看到如何使用给出的内容完成该任务。

10-04 21:05