在进行单链表的基本运算之前必须先建立单链表,建立单链表的常用方法有两种:头插法建表和尾插法建表

头插法建表,从一个空表开始,读取字符数组a中的字符,生成新节点,将读取的数据存放到新节点的数据域中,然后将新节点插入到当前链表的表头上,直到读完字符数组a的所有元素为止。

头插法建表虽然简单,但生成的链表中节点的次序和原数组的次序相反,若希望两者的次序一致,可采用尾插法建立

尾插法建表,该算法是将新节点插到当前链表的表尾上,为此必须增加一个尾指针r,使其始终指向当前链表的尾节点

#include <stdio.h>
#include<iostream>
#include<string>
using namespace std;
typedef int ElemType;
typedef struct LNode{ElemType data;  //存放元素值struct LNode *next;//指针域指向后继结点
}LinkList;
//头插法建表
void CreateListHead(LinkList *&L,ElemType a[],int n){LinkList *s;L=(LinkList *)malloc(sizeof(LinkList));//创建头结点L->next=NULL;   //将头结点next域置空for(int i=0;i<n;i++){   //循环建立数据结点//创建数据结点*ss=(LinkList *)malloc(sizeof(LinkList));//将结点s插在原开始节点之前,头结点之后s->data=a[i];s->next=L->next;L->next=s;}
}
//尾插法建表
void CreateListTail(LinkList *&L,ElemType a[],int n){LinkList *s,*r;L=(LinkList *)malloc(sizeof(LinkList));//创建头结点r=L;//r始终指向尾结点,开始时头结点和尾结点是同一个for(int i=0;i<n;i++){s=(LinkList *)malloc(sizeof(LinkList));//创建数据结点s->data=a[i];//数据域r->next=s;//将s插入到r后r=s;//使r指向尾结点}r->next=NULL;//尾指针指针域置空}
//输出
void DispList(LinkList *L){LinkList *p=L->next;//p指向开始结点while(p!=NULL){cout<<p->data<<" "; //输出数据域p=p->next;}cout<<endl;
}
int main(){LinkList *L;int n;cout<<"n:";cin>>n;int *a=new int(n);for(int i=0;i<n;i++){cin>>a[i];}//头插法建表CreateListHead(L,a,n);   cout<<"头插法建表:";DispList(L);//输出//尾插法建表CreateListTail(L,a,n); cout<<"尾插法建表:";DispList(L);//输出
}

头插法和尾插法建立单链表相关推荐

  1. 采用头插法和尾插法建立单链表

    面说一下如果用C语言建立单链表,分为头插法和尾插法两种. 采用头插法建立单链表 该方法从一个空表开始,生成新结点,并将读取到的数据存放到新结点的数据域中,然后将新结点插入到当前链表的表头,即头结点之后 ...

  2. 单链表的建立(C语言):头插法和尾插法建立单链表

    采用头插法建立单链表 该方法从一个空表开始,生成新结点,并将读取到的数据存放到新结点的数据域中,然后将新结点插入到当前链表的表头,即头结点之后,如图2-4所示. 图2-4  头插法建立单链表 头插法建 ...

  3. 用头插法和尾插法建立单链表(带头结点)

    尾插法建立单链表 LinkList List_TailInsert(LinkList &L) {int x;L=(LinkList)malloc(sizeof(LNode));LNode *s ...

  4. 头插法和尾插法建立单链表详解与实现

    写在前面:本文使用C语言和C++引用,学C和C++的同学都是可以看懂的,C++毕竟向下兼容C.很详细,一篇能搞懂代码和原理. 先来了解几个简单概念 单链表就是线性表的链式存储: 头结点:单链表在第一个 ...

  5. 数据结构—分别用头插法和尾插法建立单链表

    #include <iostream> using namespace std; typedef struct LNode{int data;struct LNode *next; }LN ...

  6. 带头结点的头插法和尾插法创建单链表

    首先我们先定义一个链表的结构体. typedef int DataType; typedef struct Node {DataType data;struct Node* next; }*SLNod ...

  7. 头插法和尾插法创建单链表

    首先声明一个单链表结构体. typedef struct LNode {int data;struct LNode * next;}LNode,*LinkNode; 链式存储如何一次性存储足够多的数据 ...

  8. 头插法和尾插法建立带头节点的单链表

    有两种方法建立单链表,尾插法和头插法,他们的区别是:头插法是按照输入元素倒序建立,为尾插法为顺序插入,并且多一个尾节点,我们一般使用尾插法. 一.头插法 代码为: pCurr -> next = ...

  9. C++头插法尾插法建立单链表,合并两个有序单链表

    A和B是两个单链表(带表头结点),其中元素递增有序.设计一个算法,将A和B归 并成一个按元素值非递减有序的链表 C,C由A 和B 中的结点组成. #include<iostream> #i ...

最新文章

  1. [HEOI2014]平衡(整数划分数)
  2. 2018 年值得关注的 Web 设计趋势
  3. static的三种用法,定义静态变量,静态函数,静态代码块!
  4. 山西出台法规规范社会力量认养文物 系全国首例
  5. 在envi做随机森林_随机森林原理介绍与适用情况(综述篇)
  6. mysql日期加一天的公式_2020国考行测冲刺指导:数学运算常用公式大盘点
  7. 洛谷P4114 Qtree1(树链剖分+线段树)
  8. JavaScript内存泄漏知多少?
  9. 使用Couchbase分页
  10. Minikube-运行在笔记本上的Kubernetes集群
  11. python内置对象是什么_Python的内置对象类型——元组、文件,python
  12. Windows 环境安装 RabbitMQ
  13. Redis 服务器安装
  14. Django日志模块logging的配置详解
  15. C经典100题(1)
  16. boost::array与std::vector使用与性能
  17. DNA测序技术的发展史之——第二代测序技术
  18. 【开明关系系列之1】人脉关系大检阅
  19. 原生 JS 实现移动端 Touch 滑动反弹
  20. 《第三节》解读Logback的配置文件

热门文章

  1. 淘系页面详情API调用展示
  2. 求出1-n之间的素数(质数)
  3. 在 Mac 上通过“启动转换助理”安装 Windows 10
  4. ChatAI==ChatGPT(无需翻墙同等使用chat)
  5. 2020-03 前端技术汇总
  6. 数组和链表的顺序遍历的时间比较
  7. vue-amap 实现定位+跑步路程+跑步时间计算功能
  8. 从零搭建符合自己需求的开发环境
  9. mint系统用wine打开exe文件
  10. 世界最牛的25位顶尖大数据科学家