数据结构笔记

原创 2007年10月12日 20:55:00
 
数据结构
第一章 绪论
一:基本语言描述功能
(1): 函数结果状态代码:
#define TRUE 1
#define FALSE 0
#define OK    1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW   -2
 
(2):数据结构中元素类型一般约定为ElemType
 
(3)Status是函数的类型. 对于具体问题,可以是int.char等,用Status是代表大多数,非常一般的情况
 
(4)结束语句
函数结束语句    return 表达式;
                Return;
Case结束语句   break;
异常结束语句    exit(异常代码) ;
 
二:抽象数据类型Triplet的实现
(1):创建一个三元组
Status InitTriplet(Triplet &T, ElemType V1, ElemType V2, ElemType V3){
T=(ElemType*)malloc(3 *sizeof(ElemType));
If(!T) exit(OVERFLOW);
T[0]=V1; T[1]=V2; T[2]=V3;
Return OK;
}
这个函数比较重要.可以与以后几章的函数比较.
 
三:时间复杂度
(1)频度:指的是该语句被重复执行的次数
如: (a){++x;s=0;}
   (b){for(i=1;i<=n;++i) {++x;s+=x;}
   (c){for(i=1;i<=n;++i)
          for(j=1;j<=n;++j)
                {++x ;s+=x;}
基本操作“x 增1”语句频度分别为1,n,n².
 
(2)时间复杂度
 时间复杂度与频度的关系:T(n)=O(f(n))
对于(1)中的时间复杂度分别为O(1),O(n),O(n²).
第二章 线性表
一:基本概念
 (1):前驱与后继
除第一个元素外,集合中每个元素只有一个前驱;除最后一个元素外,集合中每个元素只有一个后继.
(2)分类
可分为顺序线性表和链式线性表.一般用SqList表示顺序表,用LinkList表示链表.
 
二:顺序表
(1):基本结构:
# define LIST_INIT_SIZE 100 //线性表存储结构的初始分配量
#define LISTINCREMENT 10 //线性表存储空间的分配增量
Typedef struct{
ElemType *elem; //存储空间基址
Int length;     //当前长度
Int Listsize   //当前分配的存储容量(以sizeof(ElemType)为单位)
}SqList;
 
(2)几个关于顺序表的重要函数
 
1:构造一个空的顺序表
Status InitList_Sq(SqList &L){
L.elem=(ElemType *)malloc(LIST_INIT_SIZE *sizeof(ElemType));
If(!L.elem) exit(OVERFLOW);
L.length=0;
L.listsize= LIST_INIT_SIZE;
return OK;
}
 
2:在顺序表L中的第i个位置之前插入新的元素e
Status ListInsert_Sq(SqList &L,int i, ElemType e) {
If(i<1 || i>L.length+1) return ERROR;
If(L.length>=L.Listsize) {
     newbase=(ElemType*)realloc(L.elem,(L.Listsize+LISTINCREMENT)*sizeof(ElemType);
      if(!newbase) return(OVERFLOW);
      L.elem=newbase;
      L.Listsize+= LISTINCREMENT;
}
q=&(L.elem[i-1]);
for(p=&(L.length-1);p>=q;--p) *(p+1)=*p;
*q=e;
++L.length;
return OK;
}
三:链表
(1):基本结构
Typedef struct LNode{
ElemType   data; //数据域
Struct LNode *next; //指针域
}LNode,*LinkList;
 
(2)几个重要函数
数据结构
1:创建链表
LinkList createList(LinkList head)
{  /*功能:建立有头节点head的数据单链表,head中存放数据*/
      LinkList p,q;
      p=q=(LinkList)malloc(sizeof(LNode));
      printf("/n   input data:/n");
      scanf("%d",&p->data);
      p->next=NULL;
      while(p->data>0){  /*建立链表的输入数据必须大于0,数据输入时以输入任何负数作为结束*/
        if(head==NULL) head=p;  /*原连表为空*/
             else{
                  q->next=p;
                  q=p;
          }
             p=(LinkList)malloc(sizeof(LNode));
             printf("/ninput data:/n");
             scanf("%d",&p->data);
             p->next=NULL;
      }
        return head;
}
 
2:输出链表
void print(LinkList head)
{/*输出链表数据*/
      LinkList r;
      r=head;
      printf("/noutput data:/n");
      while(r!=NULL){
              printf("%d ",r->data);
              r=r->next;
        }
  }  
 
3:输出链表的第i个元素
Status GetElem_L(LinkList L, int I,ElemType &e){
P=L->next; j=1;
While(p&&j<i){
P=p->next;++j;}
If(!p || j>1) return ERROR;
e=p->data;
return OK;
}
 

数据结构学习笔记

最近在看国嵌唐老师的数据结构视频,觉得还不错,所以就把笔记记录下来 本节知识点: 1.数据之间的逻辑结构:    集合结构:数据元素之间没有特别的关系,仅同属相同集合    线性结构:...
  • yhf19881015
  • yhf19881015
  • 2013年09月05日 16:51
  • 7062

数据结构学习笔记(2.线性表之单链表)

笔记:使用c语言实现可以复用的单向链表~~~~
  • qq418674358
  • qq418674358
  • 2013年08月09日 01:08
  • 3333

数据结构与算法分析笔记与总结(java实现)--二叉树笔记

数据结构与算法分析笔记与总结(java实现)--二叉树1:二叉树笔记
  • qq_27703417
  • qq_27703417
  • 2017年02月15日 17:23
  • 259

算法和数据结构学习笔记

算法和数据结构就是编程的一个重要部分,你若失掉了算法和数据结构,你就把一切都失掉了。 一、数据结构和算法绪论 程序设计 = 数据结构 + 算法 再简单来说,数据结构就是关系,也就是数据元素相互之间...
  • monkey2016
  • monkey2016
  • 2016年03月24日 19:48
  • 398

《数据结构(严蔚敏版)》学习笔记(一)——常用数据结构定义:

线性表 {顺序表,单链表,静态单链表,双向链表}; 栈 { 顺序栈 }; 队列 {单链队列,循环队列}; 串 {定长顺序串,动态顺序串,块链串}; 数组 {顺序数组}; 稀疏矩阵 {三元组顺序表,行...
  • u010542738
  • u010542738
  • 2015年10月28日 16:33
  • 777

数据结构学习笔记

数据结构 第一章 概  论 1.数据:信息的载体,能被计算机识别、存储和加工处理。 2.数据元素:数据的基本单位,可由若干个数据项组成,数据项是具有独立含义的最小标识单位。 3.数据结构:数据...
  • wuyongde0922
  • wuyongde0922
  • 2015年11月12日 18:13
  • 1047

【C++研发面试笔记】5. C++ STL数据结构

【C++研发面试笔记】5. C++ STL数据结构(容器)5.1 常见数据结构(容器)分类 vector:(连续的空间存储,可以使用[]操作符)快速的访问随机的元素,快速的在末尾插入元素,但是在序列中...
  • tostq
  • tostq
  • 2016年10月02日 18:12
  • 1528

数据结构与算法笔记 —— 向量

数据结构与算法笔记 —— 向量一. 数据结构 抽象数据类型 = 数据模型 + 定义在该模型上的一组操作。特点: 抽象定义 外部的逻辑特性 操作 & 语义 不考虑时间复杂度 不涉及数据的存储...
  • HorizontalView
  • HorizontalView
  • 2016年03月08日 09:38
  • 465

《大话数据结构》读书笔记(一)

学科起源数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科。 程序设计的本质是对确定的问题选择一种好的结构,加上设计一种好的算法, 程序设计 = 数...
  • gao_yu_long
  • gao_yu_long
  • 2017年06月06日 15:25
  • 203

数据结构与算法分析笔记(1)第1章-数据结构和算法

1.1 数据结构的原则 1.1.1 学习数据结构的必要性 一个算法如果能z
  • etdeng
  • etdeng
  • 2014年11月13日 14:41
  • 484
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据结构笔记
举报原因:
原因补充:

(最多只允许输入30个字)