基本数据结构主要包括:栈、队列、链表和有根树。
10.1 栈和队列
栈和队列都是动态集合,且在其上进行DELETE操作所移除的元素时预先设定的。在栈中,被删除的是最近插入的元素:栈实现的是一种后进先出(LIFO)策略。队列实现的是一种先进先出(FIFO)策略。
栈
栈上的INSERT操作称为压入(PUSH),无参数的DELETE操作称为弹出(POP)。栈操作的代码非常简单:
1 typedef struct { 2 int A[MAXN]; 3 int top; 4 } Stack_st; 5 6 int StackIsEmpty(Stack_st *S) { 7 if (S->top == 0) 8 return 1; 9 return 0; 10 } 11 12 void Push(Stack_st *S, int x) { 13 if (S->top+1 < MAXN) { 14 S->top = S->top + 1; 15 S->A[S->top] = x; 16 } 17 } 18 19 int Pop(Stack_st *S) { 20 if ( StackIsEmpty(S) ) { 21 perror("underflow\n"); 22 return -1; 23 } else { 24 --S->top; 25 return S->A[S->top+1]; 26 } 27 }