typedef struct MyLinkedList {
int val;
struct MyLinkedList *next;
} MyLinkedList;
MyLinkedList* myLinkedListCreate() {
MyLinkedList *newList = malloc(sizeof(MyLinkedList));
newList->next = NULL;
return newList;
}
int myLinkedListGet(MyLinkedList* obj, int index) {
MyLinkedList *tmp = obj->next;
while (index-- > 0 && tmp != NULL) {
tmp = tmp->next;
}
if (tmp == NULL) {
return -1;
}
else {
return tmp->val;
}
}
void myLinkedListAddAtHead(MyLinkedList* obj, int val) {
MyLinkedList *newNode = malloc(sizeof(MyLinkedList));
newNode->val = val;
if (obj->next != NULL) {
newNode->next = obj->next;
}
else {
newNode->next = NULL;
}
obj->next = newNode;
}
void myLinkedListAddAtTail(MyLinkedList* obj, int val) {
MyLinkedList *tmp = obj;
MyLinkedList *newNode = malloc(sizeof(MyLinkedList));
newNode->val = val;
newNode->next = NULL;
while (tmp->next != NULL) {
tmp = tmp->next;
}
tmp->next = newNode;
}
void myLinkedListAddAtIndex(MyLinkedList* obj, int index, int val) {
MyLinkedList *tmp = obj;
MyLinkedList *newNode = malloc(sizeof(MyLinkedList));
newNode->val = val;
while (tmp->next != NULL && index-- > 0) {
tmp = tmp->next;
}
if (index <= 0) {
if (tmp->next == NULL) {
newNode->next = NULL;
}
else {
MyLinkedList *tmpNode = tmp->next;
newNode->next = tmpNode;
}
tmp->next = newNode;
}
}
void myLinkedListDeleteAtIndex(MyLinkedList* obj, int index) {
MyLinkedList *tmp = obj;
while (index-- > 0 && tmp->next != NULL) {
tmp = tmp->next;
}
if (index != 0) {
MyLinkedList *tmpNode1 = tmp->next;
if (tmpNode1 != NULL) {
MyLinkedList *tmpNode2 = tmp->next->next;
tmp->next = tmpNode2;
}
free(tmpNode1);
}
}
void myLinkedListFree(MyLinkedList* obj) {
MyLinkedList *tmpNode;
while (obj != NULL) {
tmpNode = obj;
obj = obj->next;
free(tmpNode);
}
}
暂无评论