C/C++
首先,用结构体创建节点
struct ListNode
{
int val;
ListNode* next;
};
一、初始化操作
第1种,不返回的情况
void InitList1(ListNode **L)
{
*L =(ListNode*)malloc(sizeof(ListNode));
(*L)->next=NULL;
}
InitList1(&head);
第2种,不返回的情况
void InitList2(ListNode *&L)
{
L =(ListNode*)malloc(sizeof(ListNode));
L->next=NULL;
}
InitList2(head);
第3种,返回的情况
ListNode* InitList3(ListNode* head)
{
head =(ListNode*)malloc(sizeof(ListNode));
head->next=NULL;
return head;
}
head=InitList3(head);
第二、创建链表
1.尾插法
ListNode* CreateLinkList1(ListNode* head,int size)
{
int i;
ListNode* p;
ListNode* temp;
p=head;
for(i=0;i<size;i++)
{
temp=(ListNode *)malloc(sizeof(ListNode));
cin>>temp->key;
p->next=temp;
temp->next=NULL;
p=temp;
}
return head;
}
void CreateLinkList2(ListNode* head,int size)
{
int i;
ListNode* p;
ListNode* temp;
p=head;
for(i=0;i<size;i++)
{
temp=(ListNode *)malloc(sizeof(ListNode));
cin>>temp->key;
p->next=temp;
temp->next=NULL;
p=temp;
}
}
返回和不返回得到的结果一样
2.头插法
ListNode* CreateLinkList3(ListNode* head,int size)
{
int i;
ListNode* p;
ListNode* temp;
p=head;
for(i=0;i<size;i++)
{
temp=(ListNode *)malloc(sizeof(ListNode));
cin>>temp->key;
temp->next=p->next;
p->next=temp;
};
return head;
}
void CreateLinkList4(ListNode *head,int size)
{
int i;
ListNode* p;
ListNode* temp;
p=head;
for(i=0;i<size;i++)
{
temp=(ListNode *)malloc(sizeof(ListNode));
cin>>temp->key;
temp->next=p->next;
p->next=temp;
}
}
所以对于创建链表可以不用返回头结点。