数据结构基本知识点(一)

  1. 空间复杂度:临时占用的存储空间的大小。
  2. 数据结构:数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。
  3. 数据的逻辑结构:数据的逻辑结构是对数据之间的关系的描述。
  4. 数据的物理结构:数据的物理结构又称存储结构,是数据的逻辑结构在计算机中的表示。   分类:1.顺序存储 2.链式存储 3.索引存储 4.散列(哈希)存储
  5. 算法:由基本运算及规定的运算顺序构成的完整的解题步骤。或者看成按照要求设计好的有限的确切的计算序列。
  6. 算法的特征:1.有穷性 2.确定性 3.输入 4.输出 5.可行性
  7. 算法设计的目标:1.正确性 2.可读性 3.健壮性 4.高效率与低存储量需求
  8. 顺序表与链表的区别:顺序表静态分配存储密度为1   链表动态分配存储密度<1(因为有指针域)。。。顺序表可以随机存取,链表不能。。。链表插入删除比顺序表方便
  9. 单链表结点定义:
typedef struct LNode
{
  int data;
  struct LNode *next;
}LNode;
  1. 单链表算法操作
  • A和B是两个单链表,其中元素递增有序。设计一个算法将A和B归并成一个按元素值非递减有序的链表C,C由A和B中的结点组成。
void merge(LNode *&A,LNode *&B,LNode *&C)
{
  LNode *p=A->next;
  LNode *q=B->next;
  LNode *r;
  C=A;
  C->next=NULL;
  free(B);
  r=C;
  while(p!=NULL&&q!=NULL)
  {
    if(p->data<=q->data)
    {
      r->next=p;
      p=p->next;
      r=r->next;
    }
    else
    {
      r->next=q;
      q=q->next;
      r=r->next;
    }
  }
  r->next=NULL;
  if(p!=NULL)
  {
    r->next=p;
  }
  else if(q!=NULL)
  {
    r->next=q;
  }
}
  • 尾插法建立单链表     假设有n个元素已经存储在数组a中,用尾插法建立链表C。 
void CreatelistR(LNode *&C,int a[],int n)
{
    LNode *s,*r;
    int i;
    C=(LNode *)malloc(sizeof(LNode));
    C->next=NULL;
    r=C;
    for(i=1;i<=n;++i)
    {
        s=(LNode *)malloc(sizeof(LNode));
        s->data=a[i];
        r->next=s;
        r=r->next;
    }
    r->next=NULL;
}
  •  头插法建立单链表
void CreatelistF(LNode *&L,int a[], int n)
{
    LNode *s;
    int i;
    L=(LNode *)malloc(sizeof(LNode));
    L->next=NULL;
    for(i=1;i<=n;++i)
    {
        s=(LNode *)malloc(sizeof(LNode));
        s->data=a[i];
        s->next=L->next;
        L->next=s;
    }
}
原文地址:https://www.cnblogs.com/shinecox/p/3139392.html