美文网首页
线性表的链式存贮结构

线性表的链式存贮结构

作者: hhhhhhhhhh1655 | 来源:发表于2018-03-25 23:01 被阅读8次
#define Error -1
#define OK   1
typedef int Status;

typedef int ElementType;

typedef struct Node{
   
   ElementType data;
   struct Node * next;
}Node, * LinkList;

//获得一个元素
Status GetElement(LinkList L, int i, ElementType *e){
 
   //指向第一个元素的值
   LinkList p = L->next;
   int j = 1;

   while (p && j < i) {
       p = p->next;
       j++;
   }
   
   if (!p || j > i) {
       return errno;
   }
   
   *e = p->data;
   return OK;
}

Status ListInsert(LinkList L, int i , ElementType e){

   LinkList p = L;
   
   for (int j = 1; j < i; j++) {
       p = p->next;
   }
   
   if (!p || i < 1) {
       return errno;
   }

   Node *node = (Node *)malloc(sizeof(Node));
   node->data = e;
   
   node->next = p->next;
   p->next = node;

   return OK;
};


//删除元素
Status listDeleteElement(LinkList L, int i, ElementType *e){
   LinkList p = L;
   for (int j = 1; j < i; j++) {
       p = p->next;
   }
   if (!p || !p->next || i < 1) {
       return errno;
   }
   Node *node = p->next;
   p->next = node->next;
   *e = node->data;
   free(node);
   return OK;
}

LinkList CreateListTail(LinkList p, int n){
   
   LinkList tempNode, L;
   
   
   p = (Node *)malloc(sizeof(Node));
   p->data = 9999;
   p->next = NULL;
   
   L = p;
   
   for (int i = 1; i <= n; i++) {
       tempNode = (Node *)malloc(sizeof(Node));
       tempNode->data = i;
       L->next = tempNode;
       
       L = tempNode;
   }
   
   L->next = NULL;
   
   return p;
}

void LogListNode(LinkList p){
   
   LinkList L = NULL;
   L = p->next;
   
   while (L) {
       printf("%d---",L->data);
       
       L = L->next;
       
   }
  
}

Status clearList(LinkList * L){
   
   LinkList p = (*L)->next;
   
   LinkList q = NULL;
   
   while (p) {
    q = p->next;
       free(p);
    p = q;
       
   }

   (*L)->next = NULL;
   
   return OK;
   
}
// 获得链表的最中间的节点的值
//利用快慢指针  慢指针每次1步, 快指针每次走两步,当快指针走到头时,慢指针就在中央

Status getListMidNode(LinkList p, ElementType *e){

   LinkList slow = p->next, quick=p->next;
   
   while (quick->next && quick) {
       
       quick = quick->next;
       
       if (quick->next) {
           quick = quick->next;
           slow = slow->next;
       }
   }
   
   *e = slow->data;
   
   return OK;
}



相关文章

  • 数据结构-线性表(顺序表和链表)

    大纲:理解线性表的逻辑结构掌握线性表的顺序存贮结构和链式存贮结构;掌握线性表基本操作的实现。了解线性表的应用。 线...

  • 线性表的链式存贮结构

  • 数据结构与算法-C语言6-线性表之链式存储结构

    数据结构与算法-目录 1、线性表的链式存储结构 1.1、线性表链式存储结构定义 线性表的链式存储结构的特点是用一组...

  • 数据结构之有序线性表的链式存储结构

    之前写了线性表的顺序存储结构和有序线性表的顺序存储结构以及线性表的链式存储结构,今天接着写有序线性表的链式存储结 ...

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

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

  • 线性链表

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

  • 数据结构 线性表 链式存储结构

    本文主要介绍线性表的链式存储结构 为什么要使用链式存储结构? 首先我们知道,根据线性表的顺序存储结构,我们可以对顺...

  • 一、线性表

    一、线性表 线性表是一种抽象的数据类型,下面介绍几种具体的线性表存储结构(即物理结构):顺序、链式和静态链式。无论...

  • C++线性表的链式存储结构

    C++实现线性表的链式存储结构: 为了解决顺序存储不足:用线性表另外一种结构-链式存储。在顺序存储结构(数组描述)...

  • 数据结构学习第一弹 线性表(2)

    线性表的链式存储结构 前言: 采用链式存储结构的线性表称为链表,由n个结点链接而成特点: 对于顺序表的使用,我们一...

网友评论

      本文标题:线性表的链式存贮结构

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