void main() { ElemType e; SqStack *s; printf("Õ»sµÄ»ù±¾ÔËËãÈçÏÂ:\n"); printf(" (1)³õʼ»¯Õ»s\n"); InitStack(s); printf(" (2)ջΪ%s\n",(StackEmpty(s)?"¿Õ":"·Ç¿Õ")); printf(" (3)ÒÀ´Î½øÕ»ÔªËØa,b,c,d,e\n"); Push(s,'a'); Push(s,'b'); Push(s,'c'); Push(s,'d'); Push(s,'e'); printf(" (4)ջΪ%s\n",(StackEmpty(s)?"¿Õ":"·Ç¿Õ")); printf(" (5)Õ»µÄ³¤¶È=%d\n",StackLength(s)); printf(" (6)Êä³ö´ÓÕ»¶¥µ½Õ»µ×ÔªËØ:"); DispStack(s); printf(" (7)³öÕ»ÐòÁУº"); while (!StackEmpty(s)) { Pop(s,e); printf("%c",e); } printf("\n"); printf(" (8)ջΪ%s\n",(StackEmpty(s)?"¿Õ":"·Ç¿Õ")); printf(" (9)ÊÍ·ÅÕ»\n"); DestroyStack(s); }
int main(int argc, char *argv[]) { psqStack my_stack = (psqStack)malloc(sizeof(sqStack)); initStack(&my_stack); char bin; // 用于接收用户的输入的01,作为字符串处理 int decimal = 0; // 用户接收最后生成的10进制数字 while ((bin = getchar())!='\n') { // 当有回车的时候跳出循环. if (bin == '1' || bin == '0') { Push(my_stack, (int)atof(&bin)); // 注意这里atof返回的是double, 所以要强制类型转换 } else { printf("You must enter 1 or 0\n"); return ERROR; } } Show(my_stack); int popped_e; int len = StackLength( my_stack ); for (int i = 0; i < len; i++) { Pop(my_stack, &popped_e); decimal += popped_e * (int)pow(2, i); } printf(" decimal = %d\n", decimal); return 0; }
int main() { SqStack S; printf("(1)��ʼ��ջ��\n"); InitStack (S); printf("(2)�ж�ջs�Ƿ�ǿգ�"); if(StackEmpty(S)) printf("�ǿ�\n"); else printf("��\n"); printf("(3)���ν�ջԪ��a,b,c,d,e:\n"); push(S,'a'); push(S,'b'); push(S,'c'); push(S,'d'); push(S,'e'); printf("(4)�ж�ջs�Ƿ�ǿգ�"); if(StackEmpty(S)) printf("�ǿ�\n"); else printf("��\n"); printf("(5)ջ�ij����ǣ�%d\n",StackLength(S)); printf("(6)�����ջ����ջ��Ԫ��:"); StackTraverse(S); printf("\n(7)�����ջ����:"); StackGet(S); printf("\n(8)�ж�ջs�Ƿ�ǿգ�"); if(StackEmpty(S)) printf("�ǿ�\n"); else printf("��\n"); printf("(9)�ͷ�ջ"); DestroyStack(S); }
int main() { int j; SqStack s; int e; if(InitStack(&s)==OK) { for(j=1; j<=10; j++) Push(&s,j); } printf("Õ»ÖÐÔªËØÒÀ´ÎΪ£º"); StackTraverse(s); Pop(&s,&e); printf("µ¯³öµÄÕ»¶¥ÔªËØe=%d\n",e); printf("Õ»¿Õ·ñ£º%d(1:¿Õ0:·ñ)\n",StackEmpty(s)); GetTop(s,&e); printf("Õ»¶¥ÔªËØe=%dÕ»µÄ³¤¶ÈΪ%d\n",e,StackLength(s)); ClearStack(&s); printf("Çå¿ÕÕ»ºó£¬Õ»¿Õ·ñ£º%d(1:¿Õ0:·ñ)\n",StackEmpty(s)); return 0; }
/*Bianry Search Tree 前序遍历非递归实现*/ void InOrderSecond(BinaryTree btree) { Stack bStack; //BinaryTree p =NULL; StackInitial(bStack);//初始化栈 while (btree || StackLength(bStack)!=0) { while (btree != NULL) { Push(bStack, btree); btree = btree->lchild; } if (StackLength(bStack) != 0) { Pop(bStack, btree); printf("%d ", btree->key); btree = btree->rchild; } } printf("\n"); }
void main() { int j; LinkStack s; SElemType e; if(InitStack(&s)) for(j=1;j<=5;j++) Push(s,2*j); printf("栈中的元素从栈底到栈顶依次为: "); StackTraverse(s,print); Pop(s,&e); printf("弹出的栈顶元素为%d\n",e); printf("栈空否: %d(1:空 0:否)\n",StackEmpty(s)); GetTop(s,&e); printf("当前栈顶元素为%d,栈的长度为%d\n",e,StackLength(s)); ClearStack(s); printf("清空栈后,栈空否: %d(1:空 0:否),栈的长度为%d\n",StackEmpty(s),StackLength(s)); printf("是否销毁栈了: %d(1:是 0:否)\n",DestroyStack(&s)); }
void PrintStack(SqStack S) { int len = StackLength(S); printf("the stack's length is: %d\n", len); printf("the stack's capacity is: %d\n", S.stackSize); if (len <= 0) return; for (int i = 0; i < len; i++) { ElemType e = *(S.top - i - 1); printf("%d\t", e.key); } printf("\n"); }
/** * 插入元素e为新的栈顶元素 */ Status Push(SqStack &S, SElemType e) { if (S.stacksize == StackLength(S)) { //栈达到了最大容量,自动增加容量 S.base = (SElemType *) realloc (S.base, (S.stacksize + STACKINCREMENT)*sizeof(SElemType)); if (!S.base) return ERROR; S.stacksize += STACKINCREMENT; } *S.top = e; S.top++; return OK; }
int main() { Stack s; ElemType x; cout<<"(1)³õʼ»¯Õ»s"<<endl; InitStack(s); cout<<"(2)ջΪ"<<(StackEmpty(s)?"¿Õ":"·Ç¿Õ")<<endl; cout<<"(3)ÒÀ´ÎÊäÈë×ÖĸÐòÁУ¬ÒÔ¡°#¡±½áÊø£º"<<endl; cin>>x; while( x!='#') { Push(s,x); cin>>x; } cout<<"(4)ջΪ"<<(StackEmpty(s)?"¿Õ":"·Ç¿Õ")<<endl; cout<<"(5)Õ»³¤¶ÈStackLength(s):"<<StackLength(s)<<endl; cout<<"(6a)Õ»¶¥ÔªËØGetTop(s)Ϊ£º"; cout<<GetTop(s)<<endl; cout<<"(6b)Õ»¶¥ÔªËØGetTop1(s,x)Ϊ£º"<<endl; GetTop1(s,x); cout<<x<<endl; cout<<"(7)´ÓÕ»¶¥µ½Õ»µ×ÔªËØPrintStack(s)Ϊ£º"<<endl; PrintStack(s); cout<<"(8)³öÕ»Pop1(s,x)µÄÔªËØΪ£º"<<endl; Pop1(s,x); cout<<x<<endl; cout<<"(9)³öÕ»ÐòÁÐ:"<<endl; while(!StackEmpty(s)) { cout<<Pop(s)<<" "; } cout<<endl; cout<<"(10)ջΪ:"<<(StackEmpty(s)?"¿Õ":"·Ç¿Õ")<<endl; cout<<"(11)ÒÀ´Î½øÕ»ÔªËØa,b,c:"<<endl; Push(s,'a'); Push(s,'b'); Push(s,'c'); cout<<"(12)´ÓÕ»¶¥µ½Õ»µ×ÔªËØPrintStack(s)Ϊ£º"<<endl; PrintStack(s); cout<<"(13)Çå¿ÕÕ»ClearStack(s)"<<endl; ClearStack(s); cout<<"(14)ջΪ"<<(StackEmpty(s)?"¿Õ":"·Ç¿Õ")<<endl; cout<<"(15)Ïú»ÙÕ»s:"<<endl; DestoryStack(s); cout<<"(16)Ïú»ÙÕ»ºóµ÷ÓÃPush(s,e)ºÍPrintStack(s)"<<endl; Push(s,'e'); PrintStack(s); return 0; }
int main(int argc, const char *argv[]) { LinkStack *testList = NULL; elemType e; int i; srand(time(0)); printf("list length is %d\n",StackLength(testList)); if(InitStack(&testList) == ERROR){ return -1; } for(i = 0; i < 10 ; i++){ Push(testList,i); } printf("list length is %d\n",StackLength(testList)); PrintStack(testList); Pop(testList,&e); printf("pop e is %d ,length is %d \n",e,StackLength(testList)); ClearStack(&testList); printf("list length is %d\n",StackLength(testList)); printf("scanner: is it matching? "); scanner("hello(){}") ? printf("true \n"):printf("false \n"); return 0; }
//******************** void main_SeqStack(){ SeqStack S; int i; DataType a[]={'a','b','c','d','e'}; DataType e; InitStack(&S); for(i=0;i<sizeof(a)/sizeof(a[0]);i++) { if(PushStack(&S,a[i])==0) { printf("栈已满,不能进栈!"); return; } } printf("出栈的元素是:"); if(PopStack(&S,&e)==1) printf("%4c",e); if(PopStack(&S,&e)==1) printf("%4c",e); printf("\n"); printf("当前栈顶的元素是:"); if(GetTop(S,&e)==0) { printf("栈已空!"); return; } else printf("%4c\n",e); if(PushStack(&S,'f')==0) { printf("栈已满,不能进栈!"); return; } if(PushStack(&S,'g')==0) { printf("栈已满,不能进栈!"); return; } printf("当前栈中的元素个数是:%d\n",StackLength(S)); printf("元素出栈的序列是:"); while(!StackEmpty(S)) { PopStack(&S,&e); printf("%4c",e); } printf("\n"); system("pause"); }
/** * @brief delete element from the queue. * * @param[in,out] Q queue struct pointer * @param[out] e the element to be deleted * * @return return OK and set e if success, else return ERROR */ Status DeQueue(Queue* Q, ElementType* e) { assert(Q != NULL && e != NULL); if (!StackEmpty(&Q->s2)) { Pop(&Q->s2, e); return OK; } else if (!StackEmpty(&Q->s1)) { CommonType keep_one = StackLength(&Q->s1) - 1; while (keep_one--) { Pop(&Q->s1, e); Push(&Q->s2, *e); } Pop(&Q->s1, e); return OK; } else { return ERROR; } }
int main() { int j; LinkStack s; int e; if(InitStack(&s)==OK) for(j=1;j<=10;j++) Push(&s,j); printf("栈中元素依次为:"); StackTraverse(s); Pop(&s,&e); printf("弹出的栈顶元素 e=%d\n",e); printf("栈空否:%d(1:空 0:否)\n",StackEmpty(s)); GetTop(s,&e); printf("栈顶元素 e=%d 栈的长度为%d\n",e,StackLength(s)); ClearStack(&s); printf("清空栈后,栈空否:%d(1:空 0:否)\n",StackEmpty(s)); return 0; }
int main() { int a; SqStack S; SElemType x, e; if(InitStack(S)) // 判断顺序表是否创建成功,请填空 { printf("A Stack Has Created.\n"); } while(1) { printf("1:Push \n2:Pop \n3:Get the Top \n4:Return the Length of the Stack\n5:Load the Stack\n0:Exit\nPlease choose:\n"); scanf("%d",&a); switch(a) { case 1: scanf("%d", &x); if(!Push(S,x)) printf("Push Error!\n"); // 判断Push是否合法,请填空 else printf("The Element %d is Successfully Pushed!\n", x); break; case 2: if(!Pop(S,e)) printf("Pop Error!\n"); // 判断Pop是否合法,请填空 else printf("The Element %d is Successfully Poped!\n", e); break; case 3: if(!GetTop(S,e))printf("Get Top Error!\n"); // 判断Get Top是否合法,请填空 else printf("The Top Element is %d!\n", e); break; case 4: printf("The Length of the Stack is %d!\n",StackLength(S)); //请填空 break; case 5: StackTraverse(S); //请填空 break; case 0: return 1; } } }
int main(void) { int select; /*保存选择变量*/ Elem e; /*保存从函数返回的结点的值*/ Elem v; /*保存传递给函数的结点的值*/ size_t i= 0; LINKSTACK S; InitStack(&S); /*初始化栈*/ srand((int)time(NULL)); while (1) /*while_@1*/ { if (!(S.pBottom)) { printf("栈不存在!\n"); break; } system("cls"); Menu(); printf("请输入您的选择(1~9):"); scanf("%d", &select); getchar(); switch (select) /*switch_@1*/ { case 1: /*入栈.*/ v = InputValue("入栈元素为:"); Push(&S, v); printf("入栈操作成功!\n"); getchar(); break; case 2: /*输出栈中元素.*/ printf("栈为:"); TraveStack(&S); getchar(); break; case 3: /*出栈.*/ if (OK == Pop(&S, &e)) { printf("出栈成功,出栈元素是%d!\n", e); } else { printf("出栈失败!\n"); } getchar(); break; case 4: /*输出栈的长度.*/ printf("栈长为: %d \n", StackLength(&S)); getchar(); break; case 5: /*清空栈.*/ ClearStack(&S); printf("该栈已经清空!\n"); getchar(); break; case 6: /*销毁栈.*/ DestroyStack(&S); printf("栈已删除!\n"); getchar(); break; case 7: /*返回栈顶结点元素.*/ if (OK == GetTop(&S, &e)) { printf("栈顶为:%d\n", e); } else { printf("不存在栈顶元素!\n"); } getchar(); break; case 8: /*判断栈是否为空.*/ if (StackEmpty(&S) == TRUE) { printf("栈为空!\n"); } else { printf("栈非空!\n"); } getchar(); break; case 9: /*进制转换*/ { int d; unsigned int m, n; v = InputValue("请输入一个非负整数:"); d = InputValue("请输入转换进制:"); if (v < 0 ||d<2 ||d>16) { printf("输入数据错误!\n"); break; } m = (unsigned int)v; n = (unsigned int)d; Conversion_ten_to_n(m, n); getchar(); break; } default: printf("请重新选择!\n"); getchar(); break; }/*switch_@1*/ } /*while_@1*/ return EXIT_SUCCESS; }
int main() { int j; SqStack s; SElemType e; if( InitStack(&s) == OK ) for(j = 1; j <= 9; j++) Push(&s, j); printf("The items in the stack is: \n"); StackTraverse(s, visit); Pop(&s, &e); printf("The item popped is: %d\n", e); printf("\n"); printf("The stack is empty now? empty:1, not empty:0\t%d\n", StackEmpty(s)); printf("\n"); GetTop(s, &e); printf("The item at the top of the stack is: %d, the length of the stack is: %d\n",e, StackLength(s)); printf("\n"); ClearStack(&s); printf("The stack cleared, is the stack empty? empty:1, not empty:0, %d\n", StackEmpty(s)); printf("\n"); DestroyStack(&s); return 0; }
/** * @brief get queue length. * * @param[in] Q queue struct pointer * * @return queue length */ CommonType QueueLength(Queue* Q) { assert(Q != NULL); return StackLength(&Q->s1) + StackLength(&Q->s2); }