链表的基本操作
2015-09-01 21:48
405 查看
C/C++
首先,用结构体创建节点
第1种,不返回的情况
InitList1(&head);
第2种,不返回的情况
InitList2(head);
第3种,返回的情况
ListNode* InitList3(ListNode* head)
{
head =(ListNode*)malloc(sizeof(ListNode));
head->next=NULL;
return head;
}
第二、创建链表
1.尾插法
2.头插法
所以对于创建链表可以不用返回头结点。
首先,用结构体创建节点
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; } }
所以对于创建链表可以不用返回头结点。
相关文章推荐
- [C/C++]反转链表
- C#实现基于链表的内存记事本实例
- C语言实现带头结点的链表的创建、查找、插入、删除操作
- C++实现简单的学生管理系统
- Linux内核链表实现过程
- C++链表倒序实现方法
- C#通过链表实现队列的方法
- C#实现的简单链表类实例
- 找出链表倒数第n个节点元素的二个方法
- Java数据结构之简单链表的定义与实现方法示例
- C语言单循环链表的表示与实现实例详解
- C++实现的链表类实例
- PHP小教程之实现链表
- C语言双向链表的表示与实现实例详解
- C语言实现输出链表中倒数第k个节点
- C++语言实现线性表之链表实例
- STL list链表的用法详细解析
- C语言创建链表错误之通过指针参数申请动态内存实例分析
- php链表用法实例分析
- JavaScript中数据结构与算法(三):链表