单链表的创建(有头结点和无头结点)
2017-01-14 13:37
239 查看
1、有头结点的单链表的创建
#include <iostream> using namespace std; struct ListNode{ int val; ListNode *next; }; //有头结点的单链表的创建 int CreateListNode(ListNode *head) { if(head == NULL) return 123; int n; printf("请输入要创建的单链表的长度:"); scanf("%d",&n); ListNode *p = head; //p一直指向链表的末尾,用来遍历链表 if(n==0) return -123; for(int i=0; i<n; i++) { int number; printf("请输入第%d个值:",i+1); scanf("%d",&number); ListNode *s = new ListNode; //定义一个s节点用来存放每次要输入的值 s->val = number; s->next = NULL; p->next = s; p = s; } } int main() { ListNode *L = new ListNode; L->next = NULL; CreateListNode(L); }
2、无头结点的单链表的创建
因为无头结点的链表在创建的时候头结点的值被改变了,所以创建链表后若还会在链表上调用其他函数,只能采用二级指针来实现。
#include <iostream> using namespace std; struct ListNode{ int val; ListNode *next; }; //无头结点的单链表的创建 int CreateListNode(ListNode **head) { int n; printf("请输入要创建的单链表的长度:"); scanf("%d",&n); if(n==0) return -123; *head == NULL; for(int i=0; i<n; i++) { int number; printf("请输入第%d个值:",i+1); scanf("%d",&number); ListNode *tail = *head; ListNode *s = new ListNode; //定义一个s节点用来存放每次要输入的值 s->val = number; s->next = NULL; if(tail == NULL) { *head = s; tail = *head; } else { tail->next = s; tail = s; } } } int main() { ListNode *L = new ListNode; L->next = NULL; CreateListNode(&L); }
相关文章推荐
- 创建无头结点单链表
- 单链表中头结点的有无. 并讨论下有无头结点在单链表的创建,打印,插入,逆置,删除中的区别.
- 在无头结点的动态单链表上实现线性表操作Delete(L,i)
- 错误总结:无头结点链表的创建(二级指针)
- 单链表的创建、插入、删除、销毁以及查找中间结点
- 删除无头单链表的非尾结点并打印单链表
- 在无头结点的动态单链表上实现线性表操作Insert(L,i,b)
- 单链表---删除无头单链表的非尾结点(不遍历链表)
- 单链表的创建、销毁与K结点处插入新结点
- 链表面试题(一)---删除一个无头单链表的非尾结点
- 单链表的创建--带头结点
- 单链表(带头结点)的创建与倒置
- 笔试题:创建一个单链表,结点包含学生的学号,姓名,性别,年龄信息.写几个程序,实现按学生学号插入,查询,删除等操作.
- 面试题:向无头单链表的某一已知结点之前插入结点
- C语言进阶-第18讲:单链表的遍历、创建、插入和删除结点
- 无头结点链表的创建及删除
- 无头单链表的创建,及无头单链表逆转
- 有/无头节点的单链表的创建(尾插法)
- 单链表的创建和遍历、求单链表中节点的个数、查找单链表中的中间结点、判断单链表是否有环、取出有环链表中环的长度,删除有序链表中的重复结点
- 单链表(带头结点)的创建