我在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);
}
有人可以帮帮我吗?提前谢谢。
答案 0 :(得分:0)
链表的美妙之处在于,与数组不同,您无需移动或移动任何内容即可进行插入。
假设您的列表为A->C
,并且您希望在B
之后插入A
以提供A->B->C
。
A->nextElement
设为C
;需要改变。B->nextElement
未设置;需要改变。你应该能够看到如何通过你给予的东西来实现这一目标。