struct ListNode* removeElements(struct ListNode* head, int val) {
typedef struct ListNode ListNode;
ListNode*shead;
shead=(ListNode*)malloc(sizeof(ListNode));
shead->next=head;
ListNode*cur=shead;
while(cur->next!=NULL)
{
if(cur->next->val==val)
{
ListNode*tmp=cur->next;
cur->next=cur->next->next;
free(tmp);
}
else{
cur=cur->next;
}
}
head=shead->next;
free(shead);
return head;
}
707.设计链表:大致思路没问题,代码有些问题后面来检查
//节点结构
typedef struct MyLinkedList{
int val;
struct MyLinkedList* next;
} MyLinkedList;
//创建虚拟头节点
MyLinkedList* myLinkedListCreate() {
MyLinkedList*head=(MyLinkedList*)malloc(sizeof(MyLinkedList));
head->next=NULL;
return head;
}
int myLinkedListGet(MyLinkedList* obj, int index) {
MyLinkedList*Cur=obj->next;
while(Cur!=NULL)
{
int i=0;
if(i==index){
return Cur->val;
}else
{
Cur=Cur->next;
}
i++;
}
return -1;
}
void myLinkedListAddAtHead(MyLinkedList* obj, int val) {
MyLinkedList*nhead=(MyLinkedList*)malloc(sizeof(MyLinkedList));
nhead->val=val;
nhead->next=obj->next;
obj->next=nhead;
}
void myLinkedListAddAtTail(MyLinkedList* obj, int val) {
MyLinkedList*Cur=obj;
while(Cur->next!=NULL)
{
Cur=Cur->next;
}
MyLinkedList*ntail=(MyLinkedList*)malloc(sizeof(MyLinkedList));
ntail->val=val;
ntail->next=NULL;
Cur->next=ntail;
}
void myLinkedListAddAtIndex(MyLinkedList* obj, int index, int val) {
if(index==0)
{
myLinkedListAddAtTail(obj, val);
return;
}
MyLinkedList* Cur=obj->next;
int i=1;
while(i)
{
if(i==index){
MyLinkedList*newNode=(MyLinkedList*)malloc(sizeof(MyLinkedList));
newNode->val=val;
newNode->next=Cur->next;
Cur->next=newNode;
return;
}else
{
Cur=Cur->next;
}
}
}
void myLinkedListDeleteAtIndex(MyLinkedList* obj, int index) {
if(index==0)
{
MyLinkedList*tmp=obj->next;
if(tmp!=NULL){
obj->next=tmp->next;
free(tmp);
}
return;
}
MyLinkedList*Cur=obj->next;
int i=1;
while(Cur!=NULL&&Cur->next!=NULL){
i++;
if(i==index)
{
MyLinkedList*tmp=Cur->next;
if (tmp != NULL) {
Cur->next = tmp->next;
free(tmp);
}
return;
}
else
{
Cur=Cur->next;
}
}
}
void myLinkedListFree(MyLinkedList* obj) {
while(obj != NULL){
MyLinkedList *tmp = obj;
obj = obj->next;
free(tmp);
}
}
struct ListNode* reverseList(struct ListNode* head) {
struct ListNode*cur=head;
struct ListNode*pre=NULL;
struct ListNode*temp;
while(cur)
{
temp=cur->next;
cur->next=pre;
pre=cur;
cur=temp;
}
return pre;
}