精华内容
下载资源
问答
  • 尾插法

    2021-01-12 00:08:24
    线性表链式存储实验1 参照顺序表的代码结构,结合现有的项目文件(已经给出头插法创建单链表方法),完成实验项目代码,使用尾插法(参照教材算法2.7)创建单链表,其值为(‘T’,’h’,’e’,’s’,’h’,’a’,’p...

    线性表链式存储实验1 参照顺序表的代码结构,结合现有的项目文件(已经给出头插法创建单链表方法),完成实验项目代码,使用尾插法(参照教材算法2.7)创建单链表,其值为(‘T’,’h’,’e’,’s’,’h’,’a’,’p’,’e’,’o’,’f’,’y’,’o’,’u’),然后输出创建完成后的链表中的值。

    common.h
    #include<stdio.h>
    #include<stdlib.h>
    #include<malloc.h>
    #include<time.h> //用于设置随机数种子用

    #define OK 1
    #define ERROR 0
    #define TRUE 1
    #define FALSE 0

    LINKLIST.H
    #include"common.h"

    typedef char ElemType; //链表数据结点中为字符类型

    //链表结构定义
    typedef struct Node
    {
    ElemType data; //数据域
    struct Node *next; //指针域
    }Node,*LinkList; //两个类型名字:Node用于定义结点,LinkList用于定义链表

    //算法功能:初始化单链表
    void InitList(LinkList *L);

    //算法功能:输出链表内容
    void PrintList(LinkList L);

    //算法功能:头插法建立单链表
    void CreateFromHead(LinkList L);

    //算法功能:尾插法建立单链表
    void CreateFromTail(LinkList L);

    //算法功能:在单链表L中查找第i个结点
    Node * Get(LinkList L,int i);

    //算法功能:在单链表L中查找值为Key的结点
    Node * Locate(LinkList L,ElemType key);

    //算法功能:单链表插入操作算法 ,在第i个位置插入e
    void InsList(LinkList L,int i,ElemType e);

    //算法功能:删除单链表中第i个结点
    int DelList(LinkList L,int i,ElemType *e);

    //算法:两个有序单链表的合并
    LinkList MergeLinkList(LinkList LA, LinkList LB);

    LINKLIST.C
    #include"linklist.h"

    //对单链表进行初始化
    void InitList(LinkList *L)
    {
    *L=(LinkList)malloc(sizeof(Node));
    (*L)->next=NULL; //空链表
    }

    //算法功能:输出链表内容
    void PrintList(LinkList L)
    {
    Node *p;
    p=L->next; //p指向首结点
    while(p!=NULL)
    {
    printf("%C->",p->data); //输出当前值域
    p=p->next; //指针指向下一个结点
    }
    }

    //尾插法建立单链表
    void CreateFromTail (LinkList L)
    { Node *s,*r; //*s 要插入的临时结点,r指针指向尾结点
    char c;
    int flag=1;
    r=L; //初始链表为空 ,尾r和头指针L指向相同地址
    while(flag)
    { c=getchar(); //读取一个字符,回车为止,存入c
    if(c!=’$’)
    { s=(Node
    )malloc(sizeof(Node)); //分配存储空间
    s->data=c;
    r->next=s; //尾结点指向s
    r=s; //移动尾指针,指向新加入的s
    }
    else
    { flag=0;
    r->next=NULL; //结束时尾结点next置空
    }
    }
    }

    MAIN.C
    #include “linklist.h”

    /* 尾插法建立单链表
    输入的值为(‘a’,‘b’,‘c’,‘d’,‘e’,‘f’,‘g’,‘h’,‘i’),
    输出创建完成后的链表
    */

    int main( )
    {
    LinkList l; //建立一个链表,头指针l
    Node *p; //结点指针p
    printf(“尾插法建立单链表,请输入链表数据(字符间无需空格),以$结束!\n”) ;

    InitList(&l);		//链表初始化 
    CreateFromTail(l);	//调用头插法建立链表
    //输出链表内容 
    p=l->next;			//p指向首结点 
    while(p!=NULL) 		//输出整个链表 
    {
    	printf("%C->",p->data);  	//输出当前值域
    	p=p->next; 					//指针指向下一个结点 
    } 
    return 0;
    

    }

    展开全文
  • 数据结构-头插法和尾插法

    万次阅读 多人点赞 2019-05-01 20:41:50
    头插法 void HeadCreatList(List *L... //不用像尾插法一样生成一个终端节点。 L->next = NULL; for (int i = 0; i < 10; i++) { s = (struct List*) malloc(sizeof(struct List));//s指向新申请的节点 ...

     数据结构——八大算法总结(最详细)

    头插法

    void HeadCreatList(List *L) //头插法建立链表
    {
    List *s; //不用像尾插法一样生成一个终端节点。
    L->next = NULL;
    for (int i = 0; i < 10; i++) {
            s = (struct List*) malloc(sizeof(struct List));//s指向新申请的节点
            s->data = i;//用新节点的数据域来接受i
            s->next = L->next; //将L指向的地址赋值给S;//头插法与尾插法的不同之处主要在此,
            //s所指的新节点的指针域next指向L中的开始节点
            L->next = s; //头指针的指针域next指向s节点,使得s成为开始节点。
        }
    }


    尾插法

    void TailCreatList(List *L) //尾插法建立链表
    {
    List *s, *r;//s用来指向新生成的节点。r始终指向L的终端节点。
    r = L; //r指向了头节点,此时的头节点是终端节点。
    for (int i = 0; i < 10; i++) {
            s = (struct List*) malloc(sizeof(struct List));//s指向新申请的节点
            s->data = i; //用新节点的数据域来接受i
            r->next = s; //用r来接纳新节点
            r = s; //r指向终端节点
        }
        r->next = NULL; //元素已经全部装入链表L中
        //L的终端节点指针域为NULL,L建立完成
    }

    展开全文
  • 链表尾插法

    2018-11-18 19:18:57
    尾插法的简单例子,
  • c语言链表,头插法和尾插法2018年10月12日|萬仟网IT编程 |我要评论#include#include#includetypedef struct stdata{int e;}data;typedef struct s#include#include#includetypedef struct stdata{int e;}data;type.....

    c语言链表,头插法和尾插法

    2018年10月12日

    | 萬仟网IT编程

     | a48e1d17a2b0511faa7da7240b1971f6.png我要评论

    #include

    #include

    #include

    typedef struct stdata{

    int e;

    }data;

    typedef struct s

    #include

    #include

    #include

    typedef struct stdata{

    int e;

    }data;

    typedef struct stlink{

    data data;

    struct stlink* next;

    }link;

    struct link* create(){

    link* head = (link*)malloc(sizeof(link));

    memset(&head->data,0,sizeof(link));

    head->next = null;

    return head;

    }

    void head_insert(link* head,data e){

    link *ptemp,*pnew;

    if (head->data.e != 0){

    ptemp = head->next;

    pnew = (link*)malloc(sizeof(link));

    memcpy(&pnew->data,&e,sizeof(data));

    pnew->next = ptemp;

    head->next = pnew;

    }else{

    memcpy(&head->data,&e,sizeof(data));

    }

    }

    void nial_insert(link* head,data e){

    link *ptemp,*pnew;

    ptemp = head;

    if (head->data.e != 0){

    pnew = (link*)malloc(sizeof(link));

    memcpy(&pnew->data,&e,sizeof(data));

    while(ptemp->next != null)

    ptemp = ptemp->next;

    ptemp->next = pnew;

    pnew->next = null;

    }

    else{

    memcpy(&head->data,&e,sizeof(data));

    }

    }

    void dele(link* head,data e){

    link *pbefore = head;

    link *ptemp = head;

    while(ptemp->next != null){

    if (ptemp->data.e == e.e)

    {

    link *pdel = ptemp;

    pbefore->next = ptemp->next;

    pdel->next = null;

    free(pdel);

    return;

    }else{

    pbefore = ptemp;

    ptemp = ptemp->next;

    }

    }

    if (ptemp->data.e == e.e)

    {

    link *pdel = ptemp;

    pbefore->next = ptemp->next;

    pdel->next = null;

    free(pdel);

    }

    }

    void show(link* head){

    link *ptemp = head;

    while(ptemp->next != null){

    printf("%d \n",ptemp->data.e);

    ptemp = ptemp->next;

    }

    printf("%d \n",ptemp->data.e);

    }

    int main()

    {

    link *head = create();

    data e1={1001},e2={1002},e3={1003},e4={1004};

    //head_insert(head,e1);

    //head_insert(head,e2);

    //head_insert(head,e3);

    //head_insert(head,e4);

    nial_insert(head,e1);

    nial_insert(head,e2);

    nial_insert(head,e3);

    nial_insert(head,e4);

    show(head);

    printf("dele------------\n");

    dele(head,e2);

    show(head);

    return 0;

    }

    版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。

    如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

    相关文章:

    类定义时的静态成员只是声明,静态成员的定义和初始化要在类之外完成c++的static关键字可修饰类成员变量/方法,表示变量/方法不从属于特定对象,而是属于类的。...

    gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg

    今天更新一个C语言的循环,简单点就是就是我们平时在使用电脑时不停的刷新网页,生活中每天都要吃饭等等就是循环,而编程中也有不断循环的过程,或者遇到符合...

    const 在 的右边:不可以改指针的指向,可以用指针改里面的值 int const p; const在 的左边:可以改指针的指向,不可以用指针改里...

    题目链接:HDU-2222 或 Vjudge 简单说明: 题意是按行给出n个串,再给一个文本,问在文本中出现了串中的几个。题目没强调串是互不相同的哦...

    一、异常处理

    1. 异常的概念

    程序在运行过程中可能产生异常 异常(Exception)与Bug的区别

    异常时程序运行时可预料的执行分...

    gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg

    1:直接插入排序基本思想:在插入第i(i>1)个记录时,前面的i-1个记录已经好序2:例子r0 1...

    架构设计是一个非常大的话题,不管写几篇文章,接触到的始终只是冰山一角,更多的是实践中去体会。这篇文章主要介绍面向对象OO、面向方面AOP和面向服务S...

    gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg

    c++的继承作为它的一个特性,必须要做到深入了解,对于c++继承方式,我们之前讲过,有单继承,多继承,菱形继承,虚拟继承,菱形虚拟继承。

    这次我们来深入探究一...

    前言 第一级是直接调用 分配空间, 调用 释放空间, 第二级三就是建立一个内存池, 小于128字节的申请都直接在内存池申请, 不直接调用 和`fre...

    网友评论

    387afa1e91d68b43eca6c11dc07bf577.gif

    验证码:

    263227.html

    展开全文
  • 2019考研计算机专业课的考试内容,主要包括数据...本期新东方在线与考生分享的是考研计算机数据结构中单链表—尾插法建表的方法,希望对考生有所帮助。尾插法建表:该方法是将新结点插到当时链表的表尾上,为此,必...

    2019考研计算机专业课的考试内容,主要包括数据结构、计算机组成原理、操作系统和计算机网络。其中,数据结构和计算机组成原理均占45分,操作系统35分,计算机网络25分。其中数据结构课程以抽象为主,具体操作上来说,包括数组的实现方法和链表的实现方法。本期新东方在线与考生分享的是考研计算机数据结构中单链表—尾插法建表的方法,希望对考生有所帮助。

    尾插法建表:该方法是将新结点插到当时链表的表尾上,为此,必须增加一个尾指针 r ,

    使其始终指向当时链表的尾节点。

    void CreateListR (LinkList *&L,int a [ ],int n )

    {

    LinkList *s,*r; // s 是指向新结点的指针,r 是指向当时链表尾节点的指针

    L=(LinkList *) malloc (sizeof(LinkList)); // 创建头结点

    r=L; // *r 始终指向尾节点,开始时指向头结点

    for (int i=0;i

    {

    s=(LinkList *) malloc (sizeof(LinkList));

    s->data=a [ i ];

    r->next=s; // 将*s插入*r之后

    r=s;

    }

    r->next=NULL; // 尾节点next域置为NULL

    }

    尾插法与头插法最大的不同就在于,头插法只需要一个结点指针,而尾插法需要两个结点指针(不包含指向头结点的指针),多的那一个指针就是指向当时链表尾节点的尾指针,先记住这个不同点,然后我们再来看看代码部分。

    和头插法相同的部分就不再重复了,

    r=L;这一句如果大家真正掌握了上述的话,我想写出来是不费吹灰之力的,没有吸收结点时,尾指针肯定是要指向头结点的,

    r->next=s的意思不就是将 s 所指向的结点作为 r

    所指向的结点的后继么?这是什么?这不就是尾插法初衷么?尾插法不就是希望新加入的结点时作为当时链表的尾节点么?

    r=s;可不要小看了这一句噢,看似简单,却有深意滴,我们可以这样想,尾插法就是新吸收的结点作为当时链表的尾节点,而尾指针就是指向当时链表的尾节点的,那上一步中已经将

    s 所指向的结点作为了当时链表的尾节点,那么现在是不是就应该让尾指针指向它呢?那是必须的。

    展开全文
  • 创建单链表的头插法与尾插法详解

    万次阅读 多人点赞 2018-09-26 20:54:30
    创建单链表 关于数据结构的入门,就是从顺序表和...尾插法操作相对复杂,但插入的数据与插入顺序相同。 两种创建的方法各有千秋,根据实际情况选择不同的方法。 关于链表的相关其他操作,请浏览相关文档。
  • 尾插法建链表.swf

    2021-10-19 11:04:40
    尾插法建链表.swf
  • 头插法和尾插法图文并茂

    万次阅读 多人点赞 2017-09-23 17:15:46
    、 #include "stdio.h"#include "stdlib.h"typedef struct List { int data;...void TailCreatList(List *L) //尾插法建立链表{ List *s, *r;//s用来指向新生成的节点。r始终指向L的终端节点。 r = L; //
  • 尾插法创建单链表

    2021-09-14 13:21:17
    【算法代码】 #include<iostream> using namespace std; typedef struct LNode { ...L,int n) { //尾插法 L=new LNode; //生成头结点,用头指针L指向它 L->next=NULL; LinkList r=L; for(int i=
  • 尾插法建立单链表

    2021-03-25 18:27:05
    通过画利用尾插法构建单链表的示意图帮助分析,然后转化为代码的方法,很可行。当然,前提是需要知道某个阶段示意图对应的是什么代码。【算法代码】 #include <bits/stdc++.h> using namespace std; struct...
  • 建立单链表-尾插法

    2021-02-03 16:21:06
    建立单链表-尾插法 假设有n个元素存储在数组a中,用尾插法建立链表c
  • 有关单链表的创建,就地逆置,头插法,尾插法,输出等
  • 链表-头插法,尾插法,中间插入.zip
  • HashMap是头插法还是尾插法

    万次阅读 多人点赞 2019-11-21 11:15:47
    1.JDK8以前是头插法,JDK8后是尾插法 2.为什么要从头插法改成尾插法? A.因为头插法会造成死链,参考链接 B.JDK7用头插是考虑到了一个所谓的热点数据的点(新插入的数据可能会更早用到),但这其实是个伪命题,因为JDK7...
  • 创建单链表有两种方式:头插法与尾插法 尾插法是在链表的结尾增加新的节点 头插法是插入头节点后面,剩余节点前面 2 尾插法 步骤 需要新建一个尾节点tail,(初始head=tail) 创建新的节点new,连接到尾节点,...
  • cpp代码-单链表的建立(头插法、尾插法
  • 单链表的头插法与尾插法详解及实现(C语言)

    万次阅读 多人点赞 2019-11-28 20:58:41
    单链表的建立有头插法和尾插法 首先是定义一个结构体 #include <stdio.h> #include <stdlib.h> #include <stdbool.h> #define ElemType int typedef struct LNode{ ElemType Data; //数据域 ...
  • -- 【C2】【双向链表】用尾插法创建带头节点的双向链表并删除一个指定位置的结点1891: 【C2】【双向链表】用尾插法创建带头节点的双向链表并删除一个指定位置的结点时间限制:1 Sec内存限制:128 MB提交:769解决:577...
  • 单链表之尾插法

    千次阅读 2020-03-22 17:56:25
    尾插法,借助尾指针r,相当于媒婆,将原节点与新增节点P相连接,相比于头插法的好处是输入与输出顺序一致,如输入12345,输出也是12345 2、实现原理: 1、从一个空链表L开始,借助尾指针将新节点逐个插入到链表的...
  • 头插法和尾插法创建链表 尾插法: 图中尾插法的思想主要是: 多建立一个节点类型的引用 s 指向头结点. 创建一个新的节点ai 将ai的地址给s所指节点的指针域(s.next) 使s指向新节点地址方便下次循环 import java.util...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 26,493
精华内容 10,597
关键字:

尾插法