美文网首页程序书海
线性表的链式存储----单链表

线性表的链式存储----单链表

作者: 东风谷123Liter | 来源:发表于2017-10-15 12:52 被阅读0次

单链表

 typedef int datatype;
 typedef struct link_node{
   datatype info;
   struct link_node *next;
 }node;
typedef node *linklist;

建立单链表

  • 头插法
linklist creatbystack()
{  linklist  head,s;
    datatype x;
    head=NULL;
    printf("请输入若干整数序列:\n");
    scanf("%d",&x);
    while (x!=0)        /*以0结束输入*/
    {   s=(linklist)malloc(sizeof(node));  /*生成待插入结点*/
        s->info=x;
        s->next=head;           /*将新结点插入到链表最前面*/
        head=s;
        scanf("%d",&x);
    }
    return head;                /*返回建立的单链表*/
}
  • 尾插法
linklist creatbyqueue()
{
    linklist head,r,s;
    datatype x;
    head=r=NULL;
    printf("请输入若干整数序列:\n");
    scanf("%d",&x);
    while (x!=0) /*以0结束输入*/
    {    s=(linklist)malloc(sizeof(node));
         s->info=x;
         if (head==NULL)        /*将新结点插入到链表最后面*/
            head=s;
         else
            r->next=s;
        r=s;
        scanf("%d",&x);
   }
    if (r)  r->next=NULL;
    return head;                    /*返回建立的单链表*/
}

插入结点

  • 表头插入
  • 表尾插入
  • 表内插入
  • 指定位置插入(如下)
 /**********************************/
/*函数名称:insert()              */
/*函数功能:在第i个点插入x      */
/**********************************/
node *insert(node *head,datatype x,int i)
{
  node *p,*q;
  q=find(head,i);
  if(!q&&i!=0)
    printf("找不到第%d个结点,没办法插入%d",i,x);
  else
  {
    p=(node*)malloc(sizeof(node));
    p->info=x;
    if(i==0)
    {
      p->next=head;
      head=p;
    }
    else
    {
      p->next=q->next;
      q->next=p;

    }
  }
  return 0;

}

删除结点

linklist delx(linklist head,datatype x)
{
    linklist pre=NULL,p;
    if(!head){printf("链表为空\n");}
    p=head;
    while(p&&p->info!=x){pre=p;p=p->next;}
    if(p)
    {
        if(!pre) head=head->next;
        else pre->next=p->next;
    }
    free(p);
    return head;
}

相关文章

  • 线性表(三)——双向链表的表示和实现

    在上篇文章中我们分析讨论了线性表的链式存储结构。链式存储结构表示的线性表主要分为单链表、单循环链表和双向循环链表三...

  • 线性表的链式存储--单链表

    Java之线性表的链式存储——单链表 我们都知道,线性表的存储结构分为两种,顺序存储结构和链式存储结构,线性表的分...

  • 数据结构——线性表

    线性表分为顺序存储结构和链式存储结构(单链表,静态链表,循环链表,双向链表)。 单链表(**一种动态结构,所占空间...

  • 考研数据结构笔记——2.线性表的链式表示(单链表)

    线性表的链式表示 单链表的定义 线性表的链式存储称为单链表;每个链表节点,除存放元素自身的信息外,还需要存放一个指...

  • 线性链表

    线性链表 线性表的顺序存储结构:顺序表线性表的链式存储结构:线性链表 线性表的链式存储所占存储空间大于顺序存储。 ...

  • 数据结构-线性表

    归纳 线性关系、线性表的定义,线性表的基本操作。 线性表的顺序存储结构与链式存储结构(包括单(向)链表、循环链表和...

  • 数据结构之线性表

    线性表 线性表:零个或多个数据元素的有限序列线性表的两种存储结构:顺序存储&链式存储 单链表结构&顺序存储结构对比...

  • 线性表的链式存储结构1.1

    这篇文章依然介绍线性表的链式存储结构-单链表 单链表的整表创建 线性表顺序存储结构的创建,其实就是一个数组的初始化...

  • 单链表实现链式线性表(C语言)

    单链表实现链式线性表

  • 线性表

    线性表是零个或者多个具有相同的数据元素的有限序列。 线性表的二大结构:顺序存储结构、链式存储结构(单链表、静态链表...

网友评论

    本文标题:线性表的链式存储----单链表

    本文链接:https://www.haomeiwen.com/subject/wiofuxtx.html