【数据结构】单链表上的基本运算

前端之家收集整理的这篇文章主要介绍了【数据结构】单链表上的基本运算前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

1.初始化

<span style="font-family:KaiTi_GB2312;font-size:18px;">//建立一个空的单链表
LinkList InitiateLinkList( )
{
     LinkList  head;              //头指针
     head = malloc(sizeof(node));  //动态构建一个节点,它是头结点
     head ->next = NULL;
     return  head;
}</span>

2.求表长

//求单链表表head的长度
int LentghLinklist ( LinkList head )
{
      Node * p = head;           //p是工作指针,初始时p指向头结点
      int cnt = 0;               //计数器置初值
      while(p->next != NULL)     //判断是否为尾节点
      {
           p = p->next;         //指针移动到下一个节点
           cnt ++; 
      }
      return cnt;
}

3.读表元素

//在单链表head中查找第i个元素节点,若找到,则返回指向该节点的指针,否则返回NULL
Node * GetLinklist(LinkList head,int i)
{
      Node *p;                             //p是工作指针
      p = head ->next;                     //初始时p指向头结点
      int c = 1;  
      while ( (c<i) && (p != NULL) )       //当未到第i结点且未到尾节点时继续后移
      {
             p = p->next;
             c++;
      }
      if ( i == c )   return p;            //找到第i个节点
      else return NULL;                    //i<1 或 i>n ,i值不合法,查找失败
}
4.定位

<pre name="code" class="cpp">//求表head中第一个值等于x的结点的序号,若不存在这种结点,返回结果为0
int LocateLinklist( LinkList head,DataType x)
{
      Node * p = head;                     //p是工作指针
      p = p->next;                         //初始时p指向首结点
      int i=0;                             //i代表结点的序号,这里置初值为0
      while (p!= NULL && p->data !=x)      //访问链表
      {
             i++;
             p = p->next;
      }
      if (p!= NULL ) return i+1;
      else return 0;
}
 
 

5.插入

6.删除

原文链接:https://www.f2er.com/datastructure/382426.html

猜你在找的数据结构相关文章