您的位置:首页 > 其它

链表的基本操作

2015-09-01 21:48 405 查看
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;
}
}

所以对于创建链表可以不用返回头结点。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  链表