亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

蟲蟲首頁| 資源下載| 資源專輯| 精品軟件
登錄| 注冊

SqStack

  • 先序遍歷非遞歸算法 #define maxsize 100 typedef struct { Bitree Elem[maxsize] int top }SqStack void PreOrderUn

    先序遍歷非遞歸算法 #define maxsize 100 typedef struct { Bitree Elem[maxsize] int top }SqStack void PreOrderUnrec(Bitree t) { SqStack s StackInit(s) p=t while (p!=null !StackEmpty(s

    標簽: maxsize PreOrderUn SqStack typedef

    上傳時間: 2014-01-26

    上傳用戶:hewenzhi

  • 問題描述 假設停在鐵路調度站入口處的車廂序列的編號依次為1

    問題描述 假設停在鐵路調度站入口處的車廂序列的編號依次為1,2,3..n。設計一個程序,求出所有可能由此輸出的的長度為n的車廂序列。 基本要求 在棧的順序存儲結構SqStack之上實現棧的五種基本要求,即實現棧類型。除了棧初始化操作之外,都要按函數實現。Push(s,x)是一個布爾函數,當且僅當棧s上溢出時返回“假“值;再說明一個ElemType型的常量StackEmptyMark,操作pop(s)和top(s)遇到棧s為空的情況時返回值StackEmptyMark。程序對棧的任何存取必須借助于基本操作要求。

    標簽: 調度 序列

    上傳時間: 2015-08-24

    上傳用戶:王者A

  • 利用棧的基本操作實現將任意一個十進制整數N轉化為R進制整數。

    #include <stdlib.h> #include<stdio.h> #include <malloc.h> #define stack_init_size 100 #define stackincrement 10 typedef struct SqStack { int *base; int *top; int stacksize; } SqStack; int StackInit(SqStack *s) { s->base=(int *)malloc(stack_init_size *sizeof(int)); if(!s->base) return 0; s->top=s->base; s->stacksize=stack_init_size; return 1; } int Push(SqStack *s,int e) { if(s->top-s->base>=s->stacksize) { s->base=(int *)realloc(s->base,(s->stacksize+stackincrement)*sizeof(int)); if(!s->base) return 0; s->top=s->base+s->stacksize; s->stacksize+=stackincrement; } *(s->top++)=e; return e; } int Pop(SqStack *s,int e) { if(s->top==s->base) return 0; e=*--s->top; return e; } int stackempty(SqStack *s) { if(s->top==s->base) { return 1; } else { return 0; } } int conversion(SqStack *s) { int n,e=0,flag=0; printf("輸入要轉化的十進制數:\n"); scanf("%d",&n); printf("要轉化為多少進制:\n"); scanf("%d",&flag); printf("將十進制數%d 轉化為%d 進制是:\n",n,flag); while(n) { Push(s,n%flag); n=n/flag; } while(!stackempty(s)) { e=Pop(s,e); switch(e) { case 10: printf("A"); break; case 11: printf("B"); break; case 12: printf("C"); break; case 13: printf("D"); break; case 14: printf("E"); break; case 15: printf("F"); break; default: printf("%d",e); } } printf("\n"); return 0; } int main() { SqStack s; StackInit(&s); conversion(&s); return 0;                        }

    標簽: 整數 基本操作 十進制 轉化 進制

    上傳時間: 2016-12-08

    上傳用戶:愛你198

  • 數據結構實驗

    #include <iostream> #include <stdio.head> #include <stdlib.head> #include <string.head> #define ElemType int #define max 100 using namespace std; typedef struct node1 { ElemType data; struct node1 *next; }Node1,*LinkList;//鏈棧 typedef struct { ElemType *base; int top; }SqStack;//順序棧 typedef struct node2 { ElemType data; struct node2 *next; }Node2,*LinkQueue; typedef struct node22 { LinkQueue front; LinkQueue rear; }*LinkList;//鏈隊列 typedef struct { ElemType *base; int front,rear; }SqQueue;//順序隊列 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 //1.采用鏈式存儲實現棧的初始化、入棧、出棧操作。 LinkList CreateStack()//創建棧 { LinkList top; top=NULL; return top; } bool StackEmpty(LinkList s)//判斷棧是否為空,0代表空 { if(s==NULL) return 0; else return 1; } LinkList Pushead(LinkList s,int x)//入棧 { LinkList q,top=s; q=(LinkList)malloc(sizeof(Node1)); q->data=x; q->next=top; top=q; return top; } LinkList Pop(LinkList s,int &e)//出棧 { if(!StackEmpty(s)) { printf("棧為空。"); } else { e=s->data; LinkList p=s; s=s->next; free(p); } return s; } void DisplayStack(LinkList s)//遍歷輸出棧中元素 { if(!StackEmpty(s)) printf("棧為空。"); else { wheadile(s!=NULL) { cout<<s->data<<" "; s=s->next; } cout<<endl; } } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 //2.采用順序存儲實現棧的初始化、入棧、出棧操作。 int StackEmpty(int t)//判斷棧S是否為空 { SqStack.top=t; if (SqStack.top==0) return 0; else return 1; } int InitStack() { SqStack.top=0; return SqStack.top; } int pushead(int t,int e) { SqStack.top=t; SqStack.base[++SqStack.top]=e; return SqStack.top; } int pop(int t,int *e)//出棧 { SqStack.top=t; if(!StackEmpty(SqStack.top)) { printf("棧為空."); return SqStack.top; } *e=SqStack.base[s.top]; SqStack.top--; return SqStack.top; } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 //3.采用鏈式存儲實現隊列的初始化、入隊、出隊操作。 LinkList InitQueue()//創建 { LinkList head; head->rear=(LinkQueue)malloc(sizeof(Node)); head->front=head->rear; head->front->next=NULL; return head; } void deleteEle(LinkList head,int &e)//出隊 { LinkQueue p; p=head->front->next; e=p->data; head->front->next=p->next; if(head->rear==p) head->rear=head->front; free(p); } void EnQueue(LinkList head,int e)//入隊 { LinkQueue p=(LinkQueue)malloc(sizeof(Node)); p->data=e; p->next=NULL; head->rear->next=p; head->rear=p; } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 //4.采用順序存儲實現循環隊列的初始化、入隊、出隊操作。 bool InitQueue(SqQueue &head)//創建隊列 { head.data=(int *)malloc(sizeof(int)); head.front=head.rear=0; return 1; } bool EnQueue(SqQueue &head,int e)//入隊 { if((head.rear+1)%MAXQSIZE==head.front) { printf("隊列已滿\n"); return 0; } head.data[head.rear]=e; head.rear=(head.rear+1)%MAXQSIZE; return 1; } int QueueLengthead(SqQueue &head)//返回隊列長度 { return (head.rear-head.front+MAXQSIZE)%MAXQSIZE; } bool deleteEle(SqQueue &head,int &e)//出隊 { if(head.front==head.rear) { cout<<"隊列為空!"<<endl; return 0; } e=head.data[head.front]; head.front=(head.front+1)%MAXQSIZE; return 1; } int gethead(SqQueue head)//得到隊列頭元素 { return head.data[head.front]; } int QueueEmpty(SqQueue head)//判斷隊列是否為空 { if (head.front==head.rear) return 1; else return 0; } void travelQueue(SqQueue head)//遍歷輸出 { wheadile(head.front!=head.rear) { printf("%d ",head.data[head.front]); head.front=(head.front+1)%MAXQSIZE; } cout<<endl; } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 //5.在主函數中設計一個簡單的菜單,分別測試上述算法。 int main() { LinkList top=CreateStack(); int x; wheadile(scanf("%d",&x)!=-1) { top=Pushead(top,x); } int e; wheadile(StackEmpty(top)) { top=Pop(top,e); printf("%d ",e); }//以上是鏈棧的測試 int top=InitStack(); int x; wheadile(cin>>x) top=pushead(top,x); int e; wheadile(StackEmpty(top)) { top=pop(top,&e); printf("%d ",e); }//以上是順序棧的測試 LinkList Q; Q=InitQueue(); int x; wheadile(scanf("%d",&x)!=-1) { EnQueue(Q,x); } int e; wheadile(Q) { deleteEle(Q,e); printf("%d ",e); }//以上是鏈隊列的測試 SqQueue Q1; InitQueue(Q1); int x; wheadile(scanf("%d",&x)!=-1) { EnQueue(Q1,x); } int e; wheadile(QueueEmpty(Q1)) { deleteEle(Q1,e); printf("%d ",e); } return 0; }

    標簽: 數據結構 實驗

    上傳時間: 2018-05-09

    上傳用戶:123456..

  • 棧的應用:表達式求值

    編寫一個程序SqStack.cpp,實現順序棧的基本運算,并在此基礎上設計一個主程序實現對輸入的合法中綴表達式求值,為簡單起見,假設表達式只包含+,-,×,÷和括號符號。對完成如下功能: (1) 構建順序棧S,并初始化順序棧。 (2) 實現棧S的出棧、入棧算法。 (3) 實現判斷棧S是否非空的算法。 (4) 利用棧的基本操作,實現操作數為一位整數的中綴表達式求值程序。 (5) 利用棧的基本操作,實現操作數為多位整數的中綴表達式求值程序。 (6) 釋放棧。

    標簽: 表達式

    上傳時間: 2019-04-15

    上傳用戶:1431313

主站蜘蛛池模板: 洮南市| 丹寨县| 东海县| 揭东县| 博湖县| 沛县| 华容县| 措勤县| 赤峰市| 营口市| 西乌珠穆沁旗| 军事| 北川| 东宁县| 民和| 定安县| 临泽县| 鲁山县| 曲靖市| 丹巴县| 祥云县| 青浦区| 宜良县| 澳门| 清苑县| 甘孜| 越西县| 宁强县| 罗定市| 射阳县| 广水市| 崇义县| 邵阳市| 陇南市| 凤城市| 元氏县| 永泰县| 河北区| 凉山| 遂溪县| 恩施市|