- 空间复杂度:临时占用的存储空间的大小。
- 数据结构:数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。
- 数据的逻辑结构:数据的逻辑结构是对数据之间的关系的描述。
- 数据的物理结构:数据的物理结构又称存储结构,是数据的逻辑结构在计算机中的表示。 分类:1.顺序存储 2.链式存储 3.索引存储 4.散列(哈希)存储
- 算法:由基本运算及规定的运算顺序构成的完整的解题步骤。或者看成按照要求设计好的有限的确切的计算序列。
- 算法的特征:1.有穷性 2.确定性 3.输入 4.输出 5.可行性
- 算法设计的目标:1.正确性 2.可读性 3.健壮性 4.高效率与低存储量需求
- 顺序表与链表的区别:顺序表静态分配存储密度为1 链表动态分配存储密度<1(因为有指针域)。。。顺序表可以随机存取,链表不能。。。链表插入删除比顺序表方便
- 单链表结点定义:
typedef struct LNode
{
int data;
struct LNode *next;
}LNode;
- 单链表算法操作
- 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;
}
}