数据结构基本知识点(一)
- 空间复杂度:临时占用的存储空间的大小。
- 数据结构:数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。
- 数据的逻辑结构:数据的逻辑结构是对数据之间的关系的描述。
- 数据的物理结构:数据的物理结构又称存储结构,是数据的逻辑结构在计算机中的表示。 分类: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; } }