数据结构——线性表的整表创建(头插法、尾插法)
来源:互联网 发布:轮胎改装计算器软件 编辑:程序博客网 时间:2024/06/08 07:47
线性表整表创建的思路:
对于每个链表来说,他所用的空间和大小是不需要预先制定,可以动态创建。即根据需要临时创建。所以创建创建链表的过程就是动态生成链表的过程,也即是空表初始状态起,依次建立结点然后插入链表中。
头插法
- 初始化空链表L
- 让L头节点的指针指向NULL,建立一个带头节点的链表
- 手动输入数据
循环:生成新节点node,将输入的数据作为node结点的指针域,将node结点插入头节点与前一个新节点之间。
代码:
//线性表创建,头插法void CreateListHead(LinkList &L){ LinkNode *node; Elemtype data; L = (LinkNode *)malloc(sizeof(LinkNode));//创建头节点 L->next = NULL;//初始为空链表 scanf("%d", &data); while (data != 0) //如果输入的数据是0,则结束创建链表 { node = (LinkNode*)malloc(sizeof(LinkNode));//创建将要插入的结点 node->data = data;//给新节点数据域赋值 node->next = L->next;//将新节点插入链表头,头结点后 L->next = node; scanf("%d", &data); }}
尾插法
- 1.初始化空链表L,让L头节点指针指向NULL,建立一个带头节点的空链表
- 创建一个指向表尾的指针q
- 输入数据
- 循环:创建新节点p,将输入的数据作为新节点的数据域,将新节点插入到表尾
表尾指针q置空。
代码:
void CreateListTail(LinkList &L){ LinkNode *p; LinkNode *q; L = (LinkNode*)malloc(sizeof(LinkNode));//创建头节点 L->next = NULL;//初始为空链表 q = L;//尾指针,指向链表中尾节点 int data; scanf("%d", &data); while (data != 0)//如果输入的数据是0,则结束创建链表 { p = (LinkNode*)malloc(sizeof(LinkNode));//创建新节点 p->data = data; q->next = p;//将新节点插入链表尾 q = p; scanf("%d", &data); } q->next = NULL;//尾结点指针指空。}
全部代码
#pragma warning(disable:4996);#include<stdio.h>#include<stdlib.h>//http://c.biancheng.net/cpp/html/2671.html参考typedef int Elemtype;typedef struct LinkNode{ Elemtype data; struct LinkNode *next;}LinkNode,*LinkList;//线性表创建,头插法void CreateListHead(LinkList &L){ LinkNode *node; Elemtype data; L = (LinkNode *)malloc(sizeof(LinkNode));//创建头节点 L->next = NULL;//初始为空链表 scanf("%d", &data); while (data != 0) //如果输入的数据是0,则结束创建链表 { node = (LinkNode*)malloc(sizeof(LinkNode));//创建将要插入的结点 node->data = data;//给新节点数据域赋值 node->next = L->next;//将新节点插入链表头,头结点后 L->next = node; scanf("%d", &data); }}//线性表创建 尾插法//1.初始化空链表L,让L头节点指针指向NULL,建立一个带头节点的空链表//创建一个指向表尾的指针q//2输入数据//3.循环:创建新节点p,将输入的数据作为新节点的数据域,将新节点插入到表尾//4.表尾指针q置空。void CreateListTail(LinkList &L){ LinkNode *p; LinkNode *q; L = (LinkNode*)malloc(sizeof(LinkNode));//创建头节点 L->next = NULL;//初始为空链表 q = L;//尾指针,指向链表中尾节点 int data; scanf("%d", &data); while (data != 0)//如果输入的数据是0,则结束创建链表 { p = (LinkNode*)malloc(sizeof(LinkNode));//创建新节点 p->data = data; q->next = p;//将新节点插入链表尾 q = p; scanf("%d", &data); } q->next = NULL;//尾结点指针指空。}void PrintList(LinkList &L){ LinkList p = L->next; while (p) { printf("%d ", p->data); p = p->next; } printf("\n");}int main(){ LinkList L; CreateListHead(L); printf("头插法"); PrintList(L); LinkList P; CreateListTail(P); printf("尾插法"); PrintList(P); system("pause"); return 0;}
运行结果:
参考资料…
0 0
- 数据结构——线性表的整表创建(头插法、尾插法)
- 数据结构—线性表(整表创建)
- 数据结构—线性表
- 数据结构—线性表
- 数据结构—线性表
- 数据结构—线性表
- 数据结构之创建线性表
- [数据结构]线性结构——线性表
- 数据结构线性表(三)单链表的具体操作及整表创建
- 数据结构——线性表的插入
- 数据结构——线性表的删除
- 数据结构——线性表的学习
- 数据结构——线性表的实现
- 线性表的增删——数据结构
- 线性表—顺序表-创建线性表的实现
- 数据结构实验(三)——线性表的查找
- 数据结构——线性表的实现(增删部分)
- 数据结构——线性表(一)
- 大并发展示优化动态页面的静态化处理
- HDU 2050:折线分割平面(找规律,递推)
- 2D图形变换介绍
- 关于mysql设置允许远程连接
- css中为什么需要浮动?
- 数据结构——线性表的整表创建(头插法、尾插法)
- Spring事务注解@Transactional效用实测
- LeetCode #12 Integer to Roman
- MVP 设计模式理解,实战理解MVP
- Java多线程——生产者消费者模式
- PAT乙级(Basic Level)真题 >查验身份证
- [BZOJ1026][SCOI2009]windy数
- JVM运行时数据区
- Fragment之添加显示流程源码分析