数据结构中链表创建的方法探究.docVIP

  • 12
  • 0
  • 约2.59千字
  • 约 7页
  • 2018-10-17 发布于福建
  • 举报
数据结构中链表创建的方法探究

数据结构中链表创建的方法探究   摘 要:链表是线性表的链式实现方式,是数据结构中的一个重要组成部分,而链表的创建方法直接影响人们对单链表的理解。经过对“数据结构”多年教学经验的积累,对链表的创建方法进行了归纳和总结,提出了相对容易理解的创建思路以及简明、易懂的创建方法。   关键词:数据结构线性表链表前插法尾插法   中图分类号:TP3 文献标识码:A 文章编号:1007-9416(2011)03-0105-02      线性表是数据结构结构中的重要组成部分。也是算法设计中应用最广泛的一种数据结构。线性表可以用链式存储来实现,链式存储指的是线性表中的逻辑相邻的元素存储位置可以不相邻。所以在链式存储结构中,每个结点除了保存元素信息以外,至少还需一个指针来保存直接后继的地址。链式存储结构表示线性表中的数据元素时首先要创建一个链表。   每个链表都由若干个离散的结点组成,这些结点在创建链表时总是逐个生成的,从而把这些生成的结点逐个地链接起来,形成链表。在此从结点的链接方式进行分析与归纳,以单链表为例对链表的创建方法总结为以下2种,即头插法和尾插法。   当然,在创建链表之前,需要自定义结点类型。用C语言,描述单链表结点如下:   typedef struct node   { char data;   struct node *next;   }linklist;      1、头插法(表头插入法)   该方法从一个空表开始,重复读入数据,生成新结点,将读入数据存放到新结点的数据域中,然后将新结点插入当前链表的表头上,直至读入结束标志为止。图1指明:在空链表head中依次插入a,b,c之后,将d插入当前链表表头时指针的修改情况。具体算法如下:   linklist *CreatF()/*逐个输入字符,以“$”为结束符,返回单链表头指针*/   { char ch;linklist *head,*s;   head=NULL; ch=getchar();/*读入第一个结点的值*/   while(ch!=$)   { s=(linklist*)malloc(sizeof(linklist)); /*生成新结点*/   s-data=ch; /*将输入数据放入新结点的数据域中*/   s-next=head;   head=s; /*将新结点插入到表头上*/   ch=getchar(); /*读入下一个结点的值*/   }return head; /*返回表头指针*/   }      2、尾插法(表尾插入法)   头插法建立单链表虽然算法简单,但生成的链表中结点的次序和输入的顺序相反。若希望二者次序一致,可采用尾插法建立单链表。该方法是将新结点插到当前链表的表尾上,为此必须增加一个尾指针r,使其始终指向当前链表的尾结点。例如,在空链表head中插入a,b,c之后,将d插入当前链表的表尾,其指针修改情况如图2所示。   以下通过代码来实现尾插法创建方法:   linklist *CreatR() /*尾插法建立单链表,返回表头指针*/   { char ch;   linklist *head,*s,*r;   head=NULL; r=NULL;ch=getchar();   while(ch!=$)   { s=(linklist*)malloc(sizeof(linklist));   s-data=ch;   if(head==NULL) head=s; /*新结点*s插入空表*/   elser-next=s; /*非空表,新结点*s插入到尾结点*r之后*/   r=s; /*将尾指针r指向新的表尾*/   ch=getchar();/*读入下一个结点的值*/   }   if(r!=NULL)r-next=NULL; /*对于非空表,将尾结点的指针域置空*/   return head; /*返回表头指针*/   }   在上述算法中,在表头的插入操作和链表中其他位置上的插入操作处理是不一样的,我们必须对第一个位置上的插入操作做特殊处理,为此上述算法使用了第一个if语句。算法中第二个if语句的作用是为了分别处理空表和非空表这两种不同的情况。如果我们在链表的开始结点之前附加一个结点,并称它为头结点,那么就会解决这两个if语句的问题,使尾插法建立单链表的算法更加简单。   带头结点的单链表如图3所示,图中阴影部分表示头结点的数据域不存储信息,但是在有的应用中,可利用该域来存放表的长度等附加信息。   引入头结点后,尾插法建立单链表的算法可简化为:   linklist *CreatR1()   { char ch;   l

文档评论(0)

1亿VIP精品文档

相关文档