707.设计链表 ,206.反转链表
摆烂两天今天继续,再也不摆烂了。
707.设计链表:
不知道自己那错了,运行不成功。
typedef struct MyLinkedList{
int val;
struct MyLinkedList* next;
}MyLinkedList;
MyLinkedList* myLinkedListCreate() {
MyLinkedList* obj = (MyLinkedList*)malloc(sizeof(MyLinkedList));
obj->next = NULL;
return obj;
}
int myLinkedListGet(MyLinkedList* obj, int index) {
MyLinkedList* p = (MyLinkedList*)malloc(sizeof(MyLinkedList));
p = obj;
while(p!=NULL&&index!=p->val){
p = p->next;
}
if(p==NULL) return -1;
else return p;
}
void myLinkedListAddAtHead(MyLinkedList* obj, int val) {
MyLinkedList* p = (MyLinkedList*)malloc(sizeof(MyLinkedList));
p->val = val;
p->next = obj;
}
void myLinkedListAddAtTail(MyLinkedList* obj, int val) {
MyLinkedList* p = (MyLinkedList*)malloc(sizeof(MyLinkedList));
p->next = NULL;
p->val = val;
MyLinkedList* q = obj;
while(q->next!=NULL) q = q->next;
q->next = p;
}
void myLinkedListAddAtIndex(MyLinkedList* obj, int index, int val) {
MyLinkedList* p = (MyLinkedList*)malloc(sizeof(MyLinkedList));
p->next = NULL;
p->val = val;
MyLinkedList* q = obj;
while(q->next!=index && q->next!=NULL) q = q->next;
if(q->next == index){
p->next = q->next;
q->next = p;
}
else q->next = p;
}
void myLinkedListDeleteAtIndex(MyLinkedList* obj, int index) {
MyLinkedList* q = obj;
while(q->next!=NULL && q->next->val != index) q=q->next;
if(q->next->val == index) q->next = q->next->next;
}
void myLinkedListFree(MyLinkedList* obj) {
MyLinkedList* p = obj;
MyLinkedList* q = obj;
while (p != NULL)
{
p = p->next;
q = p;
free(q);
}
free(obj);
}
206.反转链表:
想不通哪里有问题明天问问群友吧。
struct ListNode* reverseList(struct ListNode* head) {
struct ListNode* p = head->next;
head->next = NULL;
while(p!=NULL){
struct ListNode* newNode=(struct ListNode*)malloc(sizeof(struct ListNode*));
newNode->val = p->val;
newNode->next = head;
head = newNode;
p=p->next;
}
return head;
}
总结,链表虽然没刷完感觉不太了解