• 行编辑器,数制转换,杨辉三角


    数制转换

    #include<stdio.h>
    #include<stdlib.h>
    #define MAXSIZE 1024
    typedef int elemtype;
    typedef struct SequenStack
    {
        elemtype data[MAXSIZE];
        int top;                        //设置顺序栈的栈顶指针 
    }SequenStack;                        //顺序栈的结构类型
    
    SequenStack * Init_SequenStack();
    SequenStack * Push_SequenStack(SequenStack *S,elemtype x);
    SequenStack * Pop_SequenStack(SequenStack *S,elemtype *x);
    void Conversion(SequenStack *S,int N,int r);
    
    int main()
    {
        SequenStack *S;
        elemtype x,y;
        system("cls");
        S=Init_SequenStack();
        printf("请输入要转换的字符和数制:
    ");
        scanf("%d,%d",&x,&y);
        Conversion(S,x,y);
        return 0;
    }
    SequenStack * Init_SequenStack()        //初始化 
    {
        SequenStack *S;                    //定义顺序栈指针变量 
        S=(SequenStack *)malloc(sizeof(SequenStack));            //申请内存空间 
        S->top=-1;
        return S; 
    }
    
    //入栈
    SequenStack * Push_SequenStack(SequenStack *S,elemtype x)
    {
        if(S->top>=MAXSIZE-1)
        {
            return 0;                                        //栈满,插入失败,返回0; 
        }
        else
        {
            S->top++;
            S->data[S->top]=x;
            return S;
        }
    }
    //出栈
    SequenStack * Pop_SequenStack(SequenStack *S,elemtype *x)
    {
        if(S->top==-1)
        {
            return 0;                                    //栈空 
        }
        else
        {
            *x=S->data[S->top];
            S->top--; 
            return S;
        } 
    } 
    void Conversion(SequenStack *S,int N,int r)
    {
        int x,n,i;
        char c;
        x=N;
        if(r<=10)
        {
            while(N>0)
            {
                S=Push_SequenStack(S,N%r);
                N=N/r;
            }
        }
        else if(r>10)
        {
            if(N%r<10)
            {
                while(N>0)
                {
                    S=Push_SequenStack(S,N%r);
                    N=N/r;
                }
            }
            else if(N%r>=10)
            {
                while(N>0)
                {
                    n=N%r-10;
                    c='a'+n;
                    S=Push_SequenStack(S,c);
                    N=N/r;
                }
            }
    
        }
        printf("%d经过%d进值转换后为:",x,r);
        while(S->top>=0)
        {
            if(S->data[S->top]>=97)
            {
                printf("%c",S->data[S->top]);
                S->top--;
            }
            else
            {
                printf("%d",S->data[S->top]);
                S->top--;
            }
        }
        printf("
    ");
    }

    行编辑器

    #include<stdio.h>
    #include<stdlib.h>
    #define MAXSIZE 1024
    typedef char elemtype;
    typedef struct SequenStack
    {
        elemtype data[MAXSIZE];
        int top;                        //设置顺序栈的栈顶指针 
    }SequenStack;    //顺序栈的结构类型
    
    SequenStack * Init_SequenStack();
    SequenStack * Push_SequenStack(SequenStack *S,elemtype c);
    SequenStack * Pop_SequenStack(SequenStack *S,elemtype *x);
    SequenStack * EDIT(SequenStack *S,elemtype c);
    int main()
    {
        char cmd;
        SequenStack *S;
        elemtype c,x;
        int isdo,i,len;
        system("cls");
        S=Init_SequenStack();
        printf("请输入要编辑的字符串:
    ");
        c=getchar();
        S=EDIT(S,c);
        while(S->top>=0)
        {
            printf("%c",S->data[S->top]);
            S->top--;                        
        }
        return 0;
    }
    SequenStack * Init_SequenStack()        //初始化 
    {
        SequenStack *S;                    //定义顺序栈指针变量 
        S=(SequenStack *)malloc(sizeof(SequenStack));            //申请内存空间 
        S->top=-1;
        return S; 
    }
    //入栈
    SequenStack * Push_SequenStack(SequenStack *S,elemtype x)
    {
        if(S->top>=MAXSIZE-1)
        {
            return 0;                                        //栈满,插入失败,返回0; 
        }
        else
        {
            S->top++;
            S->data[S->top]=x;
            return S;
        }
    }
    //出栈
    SequenStack * Pop_SequenStack(SequenStack *S,elemtype *x)
    {
        if(S->top==-1)
        {
            return 0;                                    //栈空 
        }
        else
        {
            *x=S->data[S->top];
            S->top--; 
            return S;
        } 
    } 
    SequenStack * EDIT(SequenStack *S,elemtype c)
    {
        elemtype x;
        while(c!='*')
        {
            if(c=='#')
            {
                Pop_SequenStack(S,&x);
            }
            else if(c=='@')
            {
                S->top=-1;
            }
            else
            {
                Push_SequenStack(S,c);
            }
            c=getchar();
        }
        return S;
    }

    杨辉三角

    #include<stdio.h>
    #include<stdlib.h>
    #define MAXSIZE 1024
    typedef int elemtype;
    typedef struct SequenQueue
    {
        elemtype data[MAXSIZE];
        int front;
        int  rear;
    }SequenQueue;
    SequenQueue *Init_SequenQueue();
    int SequenQueue_Empty(SequenQueue * Q);
    int SequenQueue_Full(SequenQueue * Q);
    int SequenQueue_Length(SequenQueue *Q);
    int Enter_SequenQueue(SequenQueue * Q,elemtype x);
    int Delete_SequenQueue(SequenQueue * Q,elemtype *x);
    int GetFront_SequenQueue(SequenQueue * Q,elemtype *x);
    int find(SequenQueue * Q,elemtype key);
    void YHTriangle(int n);
    void menu();
    //初始化
    SequenQueue *Init_SequenQueue()
    {
        SequenQueue * Q;
        Q=(SequenQueue *)malloc(sizeof(SequenQueue));
        if(Q!=NULL)
        {
            Q->front=0;
            Q->rear=0;
        }
        return Q;
    }
    //判队列空
    int SequenQueue_Empty(SequenQueue * Q)
    {
        if(Q->front==Q->rear)
        {
            return 1;
        }
        else
        {
            return 0;
        }
    }
    //判断队列满
    int SequenQueue_Full(SequenQueue * Q)
    {
        if((Q->rear+1)%MAXSIZE==Q->front)
        {
            return 1;
        }
        else
        {
            return 0;
        }
    }
    //循环队列的长度
    int SequenQueue_Length(SequenQueue * Q)
    {
        return((Q->rear-Q->front+MAXSIZE)%MAXSIZE);
    }
    //入队
    int Enter_SequenQueue(SequenQueue * Q,elemtype x)
    {
        if(SequenQueue_Full(Q))
        {
            return 0;
        }
        Q->data[Q->rear]=x;
        Q->rear=(Q->rear+1)%MAXSIZE;
        return 1;
    }
    //出队
    int Delete_SequenQueue(SequenQueue * Q,elemtype *x)
    {
        if(Q->front==Q->rear)
        {
            return 0;
        }
        else
        {
            *x=Q->data[Q->front];
            Q->front=(Q->front+1)%MAXSIZE;
            return 1;
        }
    }
    //取队头数据元素
    int GetFront_SequenQueue(SequenQueue * Q,elemtype *x)
    {
        if(Q->front==Q->rear)
        {
            return  0;
        }
        else
        {
            *x=Q->data[Q->front];
            return 1;
        }
    }
    int find(SequenQueue * Q,elemtype key)
    {
        int j=0,k;
        k=Q->front;
        if(Q->front==Q->rear)
        {
            return 0;
        }
        else
        {
            while(k!=Q->rear)
            {
                if(Q->data[k]!=key)
                {
                    j++;
                    k=(k+1)%MAXSIZE;
                }
                else if(Q->data[k]==key)
                {
                    return j;
                }
            }
            return 0;
        }
    }
    
    
    void menu()
    {   system("cls");
        printf("		1-创建队列
    ");
        printf("		2-input data
    ");
        printf("		3-get length
    ");
        printf("		4-判断队空
    ");
        printf("		5-修改队头元素
    ");
        printf("		6-取出队头元素
    ");
        printf("		7-查找
    ");
        printf("		8-输出
    ");
        printf("		9-判断队满
    ");
        printf("		a-打印杨辉三角
    ");
        printf("		#-quit
    ");
        printf("Please select:  ");
    }
    void YHTriangle(int n)
    {
        SequenQueue *T;
        int a1,a2;    //分别存放第i-1行上的相邻两个数据
        int i,k,y;
        T=Init_SequenQueue();
        printf("	%d
    ",1);
        Enter_SequenQueue(T,1);
        Enter_SequenQueue(T,1);
        for(i=2;i<=n;i++)
        {
            
            Enter_SequenQueue(T,1);
            for(k=0;k<i-1;k++)
            {
                y=Delete_SequenQueue(T,&a1);
                y=GetFront_SequenQueue(T,&a2);
                
                printf("%d	",a1);
                y=Enter_SequenQueue(T,a1+a2);
            }
            y=Delete_SequenQueue(T,&a2);
            printf("	%d	
    ",a2);
            y=Enter_SequenQueue(T,1);
        } 
        
    }
    int main()
    {
        SequenQueue * Q=NULL;
        char cmd; 
        int i,len,isdo,m,n;                                                                                           
        elemtype x,key;
        system("cls");
        menu();
        while((cmd=getchar())!='#')
        {    switch(cmd)
            {    case '1':   Q=Init_SequenQueue();    
                            printf("
    Created the Queue!
    ");
                            printf("
    
    
    			");
                            break;
                case '2':    printf("
    Inputing data ....
    ");
                            scanf("%d",&x);
                            while(x!=0)
                            {
                                isdo=Enter_SequenQueue(Q,x);
                                if(isdo==0)
                                {
                                    printf("入队失败
    ");
                                }
                                scanf("%d",&x);
                            }
                            printf("
    
    
    			");
                            break;
                case '3':    printf("
    Caculating the Length of the Queue...
    ");
                            len=SequenQueue_Length(Q);
                            printf("队列的长度为:%d
    ",len);
                            printf("
    
    
    			");
                            break;
                case '4':    
                            isdo=SequenQueue_Empty(Q);
                            if(isdo==0)
                            {
                                printf("队列不为空
    ");
                            }
                            else if(isdo==1)
                            {
                                printf("队列为空
    ");
                            }
                            printf("
    
    
    			");
                            break;
                case '5':    
                            isdo=Delete_SequenQueue(Q,&x);
                            if(isdo==0)
                            {
                                printf("修改队头元素失败
    ");
                            }
                            else if(isdo==1)
                            {
                                printf("删除的数据元素:%d,新的队头元素为%d
    ",x,Q->data[Q->front]);
                            }
                            printf("
    
    
    			");
                            break;
                case '6':    isdo=GetFront_SequenQueue(Q,&x);
                            if(isdo==0)
                            {
                                printf("取出失败
    ");
                            }
                            else
                            {
                                printf("取出的数据元素:%d
    ",x);
                            }
                            printf("
    Geting the data of the position...
    ");
                            printf("
    
    
    			");
                            break;
                case '7':    printf("请输入要查找的数值:");
                            scanf("%d",&key);
                            isdo=find(Q,key);
                            if(isdo==0)
                            {
                                printf("查找失败
    ");
                            }
                            else
                            {
                                printf("该数值在队列中的位置:%d
    ",isdo+1);
                            }
                            
    
                            printf("
    
    
    			");
                            break;
                case '8':   printf("
    Displaying the all data of the Queue!...");
                            m=Q->front;
                            while(m!=Q->rear)
                            {
                                printf("%d	",Q->data[m]);
                                m=(m+1)%MAXSIZE;
                            }
                            printf("
    
    
    			");
                            break;
                case '9':   isdo=SequenQueue_Full(Q);
                            if(isdo==1)
                            {
                                printf("队列已满
    ");
                            }
                            else
                            {
                                printf("队列不满");
                            }
                            break;
                case 'a':    printf("请输入要打印的行数
    ");
                            scanf("%d",&n);
                            YHTriangle(n);
                            break;
                                
            }
            fflush(stdin);
            system("pause");
            menu();
        }
    
    
        return 0;
    }
  • 相关阅读:
    SolrCloud-5.2.1 集群部署及测试
    提问的艺术
    Zookeeper集群部署
    Linux基本操作命令总结
    LeetCode——Gray Code
    LeetCode——Find the Duplicate Number
    如何拿到国内IT巨头的Offer
    LeetCode—— Median of Two Sorted Arrays
    LeetCode——Merge k Sorted Lists
    CSS常见Bugs及解决方案列表
  • 原文地址:https://www.cnblogs.com/xxs812/p/7977251.html
Copyright © 2020-2023  润新知