单链表的头插法 尾插法----期末复习2

2024-06-11 13:04
文章标签 复习 期末 单链 插法

本文主要是介绍单链表的头插法 尾插法----期末复习2,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

对于头插法与尾插法创建单链表的示意图:

### 头插法

初始为空链表:
```
L -> NULL
```
每次插入一个节点,如插入节点3:
```
L -> |3| -> NULL
    ^       L
```
接着插入节点2:
```
L -> |2| -> |3| -> NULL
    ^       L
```
继续插入,直到形成:
```
L -> |1| -> |2| -> ... -> |n| -> NULL
    ^                        L
```

代码实现(头插法)

typedef int ElemType;    //便于后期的修改 
 
//定义结点类型 
typedef struct Node {
    ElemType data;              //单链表中的数据域 
    struct Node *next;          //单链表的指针域 
}Node,*LinkedList;

2.单链表的创建
    //单链表的建立(头插法)
    
    LinkedList ListCreatH() {
        Node *L;
        L = (Node *)malloc(sizeof(Node));   //申请头结点空间
        L->next = NULL;                      //初始化一个空链表
        int i=0;
        ElemType x;                         //x为链表数据域中的数据
        while(i<10) {
            Node *p;
            p = (Node *)malloc(sizeof(Node));    //申请新的结点 
            scanf("%d",&x);
            p->data = x;                     //结点数据域赋值 
            p->next = L->next;                    //将结点插入到表头L-->|2|-->|1|-->NULL 
            L->next = p; 
            i++;
        }
        return L; 
    } 
     
     
  
 

### 尾插法

初始为空链表:
```
L -> NULL
```
每次插入一个节点,如插入节点3,并保持 `r` 指向当前末尾:
```
L -> |3| -> NULL
     r      L
```
接着插入节点2,`r` 移动到节点3之后:
```
L -> |3| -> |2| -> NULL
       r     L
```
继续插入,直到形成:
```
L -> |1| -> |2| -> ... -> |n| -> NULL
          r              L
```
在尾插法中,`L` 始终指向头结点,而 `r` 随着插入过程不断更新,始终保持指向当前最后一个节点。

>>>>>>>

 //单链表的建立(尾插法)(注:比较常用)
     
    LinkedList ListCreatT() {
        Node *L;
            L = (Node *)malloc(sizeof(Node));   //申请头结点空间
            L->next = NULL;                  //初始化一个空链表
             Node *r;
              r = L;                          //r始终指向终端结点,开始时指向头结点 
            int i=0   ;                   //x为链表数据域中的数据
            for(i=0;i<10;i++)
            {         
                Node *p;
                p = (Node *)malloc(sizeof(Node));   //申请新的结点 
                scanf("%d",&p->data);
                r->next = p;                 //将结点插入到表头L-->|1|-->|2|-->NULL 
                r = p;                         //将r结点移动到最后一个节点
            }
            r->next = NULL;                  //让r结点的指针域置空(链表创建完成)
            return L; 
 

这篇关于单链表的头插法 尾插法----期末复习2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1051249

相关文章

【408数据结构】散列 (哈希)知识点集合复习考点题目

苏泽  “弃工从研”的路上很孤独,于是我记下了些许笔记相伴,希望能够帮助到大家    知识点 1. 散列查找 散列查找是一种高效的查找方法,它通过散列函数将关键字映射到数组的一个位置,从而实现快速查找。这种方法的时间复杂度平均为(

Go语言构建单链表

package mainimport "fmt"type ListNode struct {Val intNext *ListNode}func main() {list := []int{2,4,3}head := &ListNode{Val:list[0]}tail := head //需要头尾两个指针for i:=1;i<len(list);i++ {//方法一 数组直接构建链表tai

[数据结构]线性表之单链表的类模板实现

类的具体实现如下: /#include"LinearList.h"#include <iostream>#include <cstdlib>using namespace std;template<class T>struct LinkNode //链表节点类{T data;LinkNode<T>* link;LinkNode(LinkNode<T>* ptr=NULL):

逆序和顺序创建单链表

单链表是一种顺序的存储方式,数据结构学的不好,考研又是必考内容,只好从头开始学习,相信不断地积累会有更好的爆发! 首先单链表的创建,单链表是建立在结构体的基础上,要创建单链表首先要建立起一个储存数据的结构体: struct node{int elem;node *next;};elem是数据域,用来存放你要输入的数据,next是指向下个存放数据节点的指针同为node 类型; 下面是

计算机基础知识复习9.6

点对点链路:两个相邻节点通过一个链路相连,没有第三者 应用:PPP协议,常用于广域网 广播式链路:所有主机共享通信介质 应用:早期的总线以太网,无线局域网,常用于局域网 典型拓扑结构:总线型 星型(逻辑总线型) 介质访问控制  静态划分信道 信道划分介质访问控制 频分多路复用FDM 时分多路复用TDM 波分多路复用WDM 码分多路复用CDM 动态分配信道 轮询访问介质访问控

【抽代复习笔记】28-群(二十二):四道子群例题

例1:证明,循环群的子群是循环群。 证:设G = (a),H ≤ G。 (1)若H = {e},则H是一阶循环群; (2)设H至少包含2个元素,即设H = {...,a^(-k),a^(-j),a^(-i),a^0,a^i,a^j,a^k,...}, 其中a^i是H中正指数最小的元素,0<i<j<k, 下证a^i是H的生成元: 对任意的a^t∈H(t∈Z),存在q∈Z,使得t = qi

西方社会学理论教程复习重点

一.名词解释 1.社会静力学:旨在揭示人类社会的基本秩序。它从社会的横断面,静态的考察人类社会的结构和制度,寻找确立和维护人类社会的共存和秩序的原则。 2.社会动力学:纵观人类理性和人类社会发展的先后必要阶段,所叙述的是这一基本秩序在达到实证主义这一最终阶段之前所经过的曲折历程。 3.社会事实:一切行为方式,不论它是固定的还是不固定的,凡是能从外部给予个人以约束的,或者说是普遍存在于该社会各

完整版自考西方文论选复习笔记资料

西方文论选读复习资料 1.柏拉图:古希腊哲学家,苏格拉底的学生。公园前387年在雅典城外建立学园开始授徒讲学,撰写对话。柏拉图的作品即《柏拉图文艺对话集》中讨论美学和文艺理论问题较多的有:《大希庇阿斯》、《伊安》、《高吉阿斯》、《会饮》、《斐德若》、《理想国》、《斐利布斯》、《法律》等。 ▲柏拉图《伊安》和《斐若德》内容:主要阐述了"迷狂说"和"灵魂回忆说":柏拉图认为,高明的诗人都是凭灵

ia复习笔记

HCIA 常用配置以及快捷键:! 查看时间:display clock;修改时间:clock datetime 11:11:11 2023-1-1 查看设备当前的配置:display current-configuration;查看已保存的配置:display saved-configuration;保存配置:save;查看历史的十条命令:display history-command;

android kotlin复习 Anonymous function 匿名函数

1、还是先上个图,新建kt: 2、代码: package com.jstonesoft.myapplication.testfun main(){val count = "helloworld".count()println(count);println("------------------------")var count2 = "helloworld".count(){it ==