[ 1002 ] 考试笔记 数据结构 简代码与小小说


----012345--- 

----0123345---

/********

代码

if(i<1||i>L->last+2)   printf("i的位置出界\n");return ;

if(L->last>=MAXSIZE-1) printf("链表已满\n");return ;

       for(k=L->last;k>i-1;k--) L->elem[k+1]=L->elem[k];

       elem[i-1]=e;  L->last++;

       return ok;

********/

[H|NULL]   [data|next]

[H|&P1] [P1|&P2] [P2|NULL]

头结点  首元结点

头指针  p1=H->next;

*H=(Linklist)malloc(sizeof(Node));

(*L)->next=NULL;

头插法

                     [H|&p1] [P1|&P2] [P2|NULL]

 s=(Node*)malloc(sizeof(Node)); [s|NULL]             

S->data=p;                      [p|NULL]                 

s->next=H->next;                [p|&p1]

H->next=p;           [H|&p] [p|&p1] [P1|&P2] [P2|NULL]

尾插法

                     [H|&p] [P|NULL]

s=(Node*)malloc(sizeof(Node));  [s|NULL]

S->data=c;                      [c|NULL]                 

p->next=s;           [H|&p] [P|&c  ] [c|NULL]

p=s;                        p↑      p↑s     


【栈】

typedef struct{SE elem[5];int top; }SK;

 【[0][1][2][3][4]】

 ↑             ↑

top 

进栈》》

S->top=SIZE-1 栈满 eg:5-1=4;

因为top初始化为-1所以进栈先S->top++;

S->elem[S->top]=x;     双重指向性;eg:top=2;【[0][1][x][3][4]】

出栈》》

 *x=S->elem[S->top]; 仅能由顶出(表达式来实现栈的功能)           

   *x指针指向原来top的位置,可x带出其值(实际x还在机器的x处)

   top--;维护栈,才能体现栈的含义;

【队列】

typedef struct  Node{ QE data;struct  Node *next;}LQNode;

typedef struct{LQNode *front;LQNode *rear; }LQ;

【[][][][]】?       【[f|*][r|*]】

Q->front=(LQNode *)malloc(sizeof(LQNode));   [e|*]  

if(Q->front!=NULL)

{                             

Q->rear=Q->front;        [ f|*  ][ r |* ]

Q->front->next=NULL;     [f|NULL]

return(T);

}

插入》》

N=(LQNode *)malloc(sizeof(LQNode)); [e|*]

if(N!=NULL)

{                             

N->data=x;                     [x| *  ]

N->next=NULL;                  [x|NULL]

Q->rear->next=N;           [f|NULL][ r | &x ] [x|NULL]

    Q->rear=N;                             r↑          r↑N

 

return(T);

}

                         队尾插入,队头出队;(可以重新自己反定义?)

出队》》                       [f|NULL][ r | &x ] [x|NULL]

p=Q->front->next;                      p↑        ↑p->next

Q->front->next=p->next;         [f|NULL]  [x|NULL]

*p= p->data

free(p);                              frree([ r | &x ]  )

串 string

全程为一串字符串;strings

顺序表实现储存

typedef struct{ char e[MAX];int len; }SS;

串插入  分很多情况   【----------】

                        【------[*****]-----】

                                   ↑ ↑ ↑ ↑

                                    丢掉的

         

串删除  往前移动 len--;

         for(i=p+l;i<s->len;i++)s->ch[i-l]=s.ch[i];s->len=s->len-l;

串判空 (s.len==0)?(return 1):(return 0);/*仅限于伪代码笔记*/

串复制 for(i=0;i<len;i++)s.ch[i]=t.ch[i];s->len=t->len;

串比较  for(i=0;i<len;i++)if(s.ch[i]!=t.ch[i])return (s.ch[i]-t.ch[i]);

串长度  return s.len

串清空  s->len=0;


你可能感兴趣的:(数据结构,考试笔记,简代码与小小说)