精华内容
下载资源
问答
  • 数据结构表头插入

    2011-10-21 03:15:31
    实现C语言数据结构标头的插入,对单链表的学习有用
  • 这个资源是我自己根据书上写的,vc里面没有
  • easyui 多表头 数据结构 数据是一个二维数组,每个数组表示多表头的一行 转载于:https://www.cnblogs.com/tanhu/p/6845937.html

    easyui 多表头 数据结构

    数据是一个二维数组,每个数组表示多表头的一行  

    转载于:https://www.cnblogs.com/tanhu/p/6845937.html

    展开全文
  • 数据结构之单链表头插法,尾插法

    万次阅读 2017-09-21 17:17:27
    数据结构之单链表头插法,尾插法 单链表是线性表中的一种,单链表的头插法也称前插法。链表也是线性表的一种,与顺序表不同的是,它在内存中不是连续存放的。在C语言中,链表是通过指针相关实现的。而单链表是...

    数据结构之单链表头插法,尾插法

    单链表是线性表中的一种,单链表的头插法也称前插法。

    链表也是线性表的一种,与顺序表不同的是,它在内存中不是连续存放的。在C语言中,链表是通过指针相关实现的。而单链表是链表的其中一种,关于单链表就是其节点中有数据域和只有一个指向下个节点的指针域。
    创建单链表的方法有两种,分别是头插法和尾插法。

    所谓头插法,就是按节点的逆序方法逐渐将结点插入到链表的头部。反之尾插法就是按节点的顺序逐渐将节点插入到链表的尾部。

    相对来说,头插法要比尾插法算法简单,但是最后产生的链表是逆序的,即第一个输入的节点实际是链表的最后一个节点。

    而为了习惯,通常用尾插法来创建链表。下面的代码就是实现了头插法和尾插法

    创建头节点

    //创建头结点
    Node* Create_List ()
    {
        //创建头结点
        Node* list = (Node*) malloc(sizeof(Node) / sizeof(char));
    
    
        if (NULL == list)   //检验创建是否成功
        {
            return FALSE;
        }
    
        list->next = NULL;  
    
        return list;
    }

    头插法

    // 头插法
    int Insert_Last (Node* h, LinkData data)
    {
        // 判断数据传入是否正确
        if (NULL == h)
        {
            return FALSE;
        }
         // 创建新结点并判断创建是否成功
        Node* node = (Node*) malloc(sizeof(Node) / sizeof(char));
        if (NULL == node)
        {
            return FALSE;
        }
    
        // 给结点成员变量赋值
        node->data = data;
        node->next = h->next;   // 和头指针的不同:node->next = *h;
    
        // 让新结点变为链表的第一个节点
        h->next = node;
    
        return TRUE;
    }

    尾插法

    //尾插
    int Insert_Last(Node* h, LinkData data)
    {
        if (NULL == h)
        {
            return FALSE;
        }
         // 创建新结点并判断创建是否成功
        Node* node = (Node*) malloc(sizeof(Node) / sizeof(char));
        if (NULL == node)
        {
            return FALSE;
        }
    
        // 给结点成员变量赋值
        node->data = data;
        node->next = NULL;
    
         // 让新结点变为链表的最后一个节点
        Node* tmp = h;
        while(tmp->next)
        {
            tmp = tmp->next;
        }
        //找到链表的尾节点并令尾节点指向node
        tmp->next = node;
    
        return TRUE;
    }

    扩充

    中间插入

    //中间插入法
    int Insert_Pos(Node *h, int pos, LinkData data)
    {
        //判断链表是否存在
        if (NULL == h)
        {
            return FALSE;
        }
    
        Node* tmp = h;
        int i;
        for (i = 0; i < pos - 1; i++)
        {
            if (NULL == tmp)
            {
                break;
            }
            tmp = tmp->next;
        }
        //判断tmp是否存在
        if (NULL == tmp)
        {
            printf ("插入位置越界");
            return FALSE;
        }
    
        Node* node = (Node*) malloc(sizeof(Node) / sizeof(char));
        if (NULL == node)
        {
            return FALSE;
        }
    
        node->data = data;
        node->next = tmp->next;
        tmp->next = node;
    
        return TRUE;    
    }
    展开全文
  • 结构如下图所示: 头节点中的数据域可以存储链表长度等额外的信息,也可以不存储任何信息。 头结点即链表中的第一个节点(注意头节点不同于与第一个元素),而头指针则是指向头结点的指针(有头结点的情况下)。...

    在单链表的基本操作中,我们在实现时,往往在第一个结点(含有有效数据)之前添加另外一个结点,也就是头结点。同时我们称指向头结点的指针为头指针。结构如下图所示:



    头节点中的数据域可以存储链表长度等额外的信息,也可以不存储任何信息。

    头结点即链表中的第一个节点(注意头节点不同于第一个元素),而头指针则是指向头结点的指针(有头结点的情况下)。任何一个链表实现中,可以没有头结点,但是不能没有头指针。

    我们这里用图形描述带头结点的非空链表和空链表的情况:


    为了比较,下面是不带头结点链表的情况:


    这里我们解释一下带头结点的单链表和不带头结点单链表的区别:

    两者最大的区别在于结构和算法操作上。

    结构:带头结点的单链表,不管链表是否为空,都有一个头结点;而不带头结点的单链表则不包含头结点。

    操作:

    1. 带头结点的单链表初始化时表现为申请一个头结点。
    2. 无论在什么情况下,插入和删除操作步骤一致。而不带头结点的单链表,在插入和删除操作时要考虑插入或者删除的位置是否是第一个结点,并采取不同操作。


    总结:

    链式存储结构中,如果链表由头结点,则头指针指向头结点;否则头指针指向第一元素结点。

    任何情况下,头指针都存在,无论链表是否为空。

    头结点是为了方便同一操作额外添加的,通过添加头结点,对在第一个元素结点前插入新结点或者删除新结点的操作与对其他结点的插入删除操作一致。

    头结点根据实现可有可无。



    展开全文
  • 数据结构单链表头文件“LinList.h”

    千次阅读 2017-03-22 20:32:27
    单链表头文件包括的操作如下: 1.初始化; 2.求当前数据元素个数; 3.插入数据元素; 4.删除数据元素; 5.取数据元素; 6.撤销单链表。
    #include "stdio.h"
    
    #include "math.h"
    typedef struct Node
    {
    DataType data;
    struct Node *next;
    }SLNode;
    void ListInitiate(SLNode **head)
    {
    *head = (SLNode *)malloc(sizeof(SLNode));
    (*head)->next = NULL;
    }


    int ListLength(SLNode *head)
    {
    SLNode *p = head;
    int size = 0;
    while(p->next !=NULL)
    {
    p = p->next;
    size++;
    }
    return size;
    }


    int ListInsert(SLNode *head,int i,DataType x)
    {
    SLNode *p,*q;
    int j;
    p = head;
    j = -1;
    while(p->next !=NULL&&j<i-1)
    {
    p=p->next;
    j++;
    }
    if(j!=i-1)
    {
    printf(" !");
    return 0;
    }
    q=(SLNode *)malloc(sizeof(SLNode));
    q->data=x;
    q->next=p->next;
    p->next=q;
    return 1;
    }


    int ListDelete(SLNode *head,int i,DataType *x)
    {
    SLNode *p,*s;
    int j;
    p=head;
    j=-1;
    while(p->next!=NULL&&p->next->next!=NULL&&j<i-1)
    {
    p=p->next;
    j++;
    }
    if(j!=i-1)
    {
    printf("   !");
    return 0;
    }
    s=p->next;
    *x=s->data;
    p->next=p->next->next;
    free(s);
    return 1;
    }


    int ListGet(SLNode *head,int i,DataType *x)
    {
    SLNode *p;
    int j;
    p=head;
    j=-1;
    while(p->next!=NULL&&j<i)
    {
    p=p->next;
    j++;
    }
    if(j!=i)
    {
    printf("   !");
    return 0;
    }
    *x=p->data;
    return 1;
    }


    void Destroy(SLNode **head)
    {
    SLNode *p,*p1;
    p=*head;
    while(p!=NULL)
    {
    p1=p;
    p=p->next;
    free(p1);
    }
    *head=NULL;
    }
    展开全文
  • 数据结构顺序表头文件“SeqList.h”

    千次阅读 2017-03-22 20:17:53
    顺序表头文件SeqList.h包含顺序表的操作有: 1.初始化; 2.求当前数据元素个数; 3.插入数据元素; 4.删除数据元素; 5.取数据元素。
  • 最近在学习数据结构,用的教材是严老师的《数据结构》(C语言版),学习到广义表这节时,遇到点疑问,查资料无果,故写此博客,望大神们多多指教!  废话少说,在广义表一般记作LS = (a1, a2, ...,an),ai(1 L...
  • #include struct node { int num; struct node *next; }; typedef struct node Node; typedef Node * Link; void creat_link(Link *head) { //*head = NULL;... *head = (Link)malloc(sizeof(Node)
  • 数据结构基础概念篇

    万次阅读 多人点赞 2017-11-14 13:44:24
    数据结构一些概念 数据结构就是研究数据的逻辑结构和物理结构以及它们之间相互关系,并对这种结构定义相应的运算,而且确保经过这些运算后所得到的新结构仍然是原来的结构类型。数据:所有能被输入到计算机中,且能...
  • 数据结构与算法学习笔记

    万次阅读 多人点赞 2018-09-25 13:55:49
    本文是王争老师的《算法与数据结构之美》的学习笔记,详细内容请看王争的专栏。有不懂的地方指出来,我做修改。 数据结构与算法思维导图 数据结构指的是“一组数据的存储结构”,算法指的是“操作数据的一组...
  • 最近有点忙,今天才开始看数据结构单链表的部分,由于考研,看了《王道复习指导书》上只讲了带头结点的单链表操作,只是文末提了下不带头节点的什么情况,在此结合王道复习书,电脑上写了运行了下不带头结点的。...
  • 构造两个带有表头结点的有序单链表La、Lb,编写程序实现将La、Lb合并成一个有序单链表Lc。 合并思想是:程序需要3个指针:pa、pb、pc,其中pa,pb分别指向La表与Lb表中当前待比较插入的结点,pc 指向Lc表中当前最后...
  • 超硬核!数据结构学霸笔记,考试面试吹牛就靠它

    万次阅读 多人点赞 2021-03-26 11:11:21
    上次发操作系统笔记,很快浏览上万,这次数据结构比上次硬核的多哦,同样的会发超硬核代码,关注吧。
  • 题目:以实验1.2的带表头结点单链表为存储结构,编写程序实现单链表的逆置操作(要求不引入新的存储空间)。 部分代码: 带表头结点单链表的逆置函数: //带表头结点单链表的逆置 void Inverse(HeaderList *h){ ...
  • 以下是带表头节点的单链表的一些基本操作,包括带表头节点的单链表的创建、查找、插入、删除、反转以及打印。#include using namespace std; //抽象数据类型 typedef int datatype; typedef struct node { datatype...
  • 数据结构知识整理

    万次阅读 多人点赞 2018-07-30 18:50:47
    1.数据结构:是一门研究非数值计算的程序设计问题中计算机的操作对象以及他们之间的关系和操作等的学科。 2.数据结构涵盖的内容: 3.基本概念和术语: 数据:对客观事物的符号表示,在计算机科学中是指所有能...
  • C++数据结构——栈

    万次阅读 多人点赞 2018-06-25 21:54:49
    C++数据结构——栈 最近计划再复习一遍数据结构,看到一篇博客:https://www.cnblogs.com/QG-whz/p/5170418.html#_label0。 1、栈(Stack)是一种线性存储结构,它具有如下特点: ...
  • ❤️《画解数据结构》三张动图,画解哈希❤️

    万次阅读 多人点赞 2021-08-21 13:10:35
    O(1) 的数据结构
  • 题目:参照程序2.8~2.14,编写程序,完成带表头结点单链表的初始化、查找、插入、删除、输出、撤销等操作。... //结点的数据域 struct Node * link; //结点的指针域 }Node; typedef struct { struct ...
  • 题目:以实验 1.2 的带表头结点单链表为存储结构,编写程序实现单链表的非递减排序。 部分代码: 带表头结点单链表的非递减排序函数: 本来想用冒泡排序的,但是没成功,此部分程序参考了这里:...
  • C++数据结构——队列

    万次阅读 多人点赞 2018-06-26 22:20:30
    C++数据结构——队列参考博客:http://www.cnblogs.com/QG-whz/p/5171123.htmlhttp://www.169it.com/article/2718050585107790752.html1、队列(Queue)与栈一样,是一种线性存储结构,它具有如下特点:(1)队列中...
  • typedef struct node /定义数据类型/ { char data; /数据域/ struct node *next; /指针域/ }LinkList; void print(LinkList *L) /传入链表L/ { LinkList *p; /声明链表指针p/ for(p=L;p;p=p->next) { printf("%4c...
  • C语言实现广义表头尾链表存储表示
  • 数据结构

    千次阅读 多人点赞 2018-10-06 17:40:36
    数据结构 数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或者多种特定关系的数据元素集合。通常情况下,精心选择的数据结构可以带来更高效的运行或者存储效率。数据结构往往同高效的检索算法...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 86,837
精华内容 34,734
关键字:

数据结构表头

数据结构 订阅