C在给定索引处将元素插入列表

时间:2015-04-12 22:16:30

标签: c list insert element

我在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);
}

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

1 个答案:

答案 0 :(得分:0)

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

假设您的列表为A->C,并且您希望在B之后插入A以提供A->B->C

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

你应该能够看到如何通过你给予的东西来实现这一目标。