精华内容
下载资源
问答
  • 下面小编就为大家带来一篇c++实现对输入数组进行快速排序的示例(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • C/C++输入数组

    千次阅读 2017-03-17 17:24:00
    已知数组的大小,使用动态数组 13 */ 14 int i = 0 ; 15 int num; 16 int * a = new int [ 5 ]; 17 while (cin >> num ) { 18 if (cin. get () == ' \n ' ) // 遇到回车,终止 19 ...
    1 int n=0;
    2 printf("please enter the number:\n");
    3 scanf("%d",&n);
    4   
    5 int *number=new int[n];
    6   
    7 for(int i=0;i<n;++i)
    8    scanf("%d ",&number[i]);

     1 #include<iostream>
     2 #include<vector>
     3 using namespace std;
     4  
     5  
     6  
     7  
     8  
     9 int main()
    10 {
    11     /*
    12     已知数组的大小,使用动态数组
    13     */
    14     int i = 0;
    15     int num;
    16     int * a = new int[5];
    17     while (cin >> num ) {
    18         if (cin.get() == '\n')   //遇到回车,终止
    19             break;
    20         a[i++] = num;
    21     }
    22  
    23     /*
    24     数组大小未知时
    25     */
    26     vector<int>b;
    27     while (cin >> num)
    28     {
    29         if (cin.get() == '\n')   //遇到回车,终止
    30             break;
    31         b.push_back(num);
    32  
    33     }
    34     cout << "程序终止了" << endl;
    35     system("pause");
    36     return 0;
    37 }

     

    转载于:https://www.cnblogs.com/cymwill/p/6567466.html

    展开全文
  • C++ 输入数组利用递归建立二叉树——层序、前序、中序、后序 1、输入数组要求 数组是按照层序输入的,当该结点为空时,用‘#’代替空的位置,如下图。(这里直接截取大话数据结构里面的图片) 2、二叉树结构定义 ...

    C++ 输入数组利用递归建立二叉树——层序、前序、中序、后序


    1、输入数组要求
    数组是按照遍历方式输入,当该结点为空时,用‘#’代替空的位置,如下图。(这里直接截取大话数据结构里面的图片) 在这里插入图片描述

    2、二叉树结构定义

    struct TreeNode {
        int val;
        TreeNode *left;
        TreeNode *right;
        TreeNode(int x) : val(x), left(NULL), right(NULL) {}
    };
    

    3、二叉树构建函数

    // 1、层序递归创建
    层序创建:根据二叉树每层节点都有左右孩子,其左右孩子对于下层又分别存在左右孩子的一个递归关系,直到最底层。

    #include <iostream>
    #include <vector>
    using namespace std;
    
    struct TreeNode {
        int val;
        TreeNode *left;
        TreeNode *right;
        TreeNode(int x) : val(x), left(NULL), right(NULL) {}
    };
    
    //参数(输入数组,数组当前位置,数组长度,当前节点结构体指针指向的地址)
    void CreateBiTree(int *S,int sub,int len,TreeNode* &tree){
        if((S[0]=='#')||len==0)//对特殊情况进行分析,例如输入空数组,或者'#'开头的数组
            return ;
        if(sub>=len) //超过数组长度返回
            return ;
        if(S[sub]=='#'){
            tree=NULL;
        }
        else{
            tree=(TreeNode*)malloc(sizeof(TreeNode));
            tree->val=(S[sub]);
            CreateBiTree(S,sub*2+1,len,tree->left);  //建立左子树
            CreateBiTree(S,sub*2+2,len,tree->right); //建立右子树
        }
    }
    
    void Print(TreeNode* p)
    {
        if (NULL == p)
            return;
        cout<<" "<<p->val;   
        //前序输出  1 2 4 3
        Print(p->left);
        Print(p->right);
    }
    
    int main()
    {
        TreeNode* root;
        int data[] = { 1,2,3,'#',4};
        int len=sizeof(data)/sizeof(int);
        int sub=0;
        CreateBiTree(data,sub,len,root);
        Print(root);
        return 0;
    }
    

    // 2、前序递归创建
    输入前序数据创建:前序遍历相对简单,与前序遍历一致,只是在遍历打印的地方改为生成节点、赋值操作。
    需要注意在 CreateBiTree(int S,int &sub,int len,TreeNode &tree) 函数中参数&sub需要传入指针地址,在递归中len值必须保持调用一次增长一次。

    #include <iostream>
    #include <string>
    using namespace std;
    struct TreeNode {
        int val;
        TreeNode *left;
        TreeNode *right;
        TreeNode(int x) : val(x), left(NULL), right(NULL) {}
    };
    
    void CreateBiTree(int *S,int &sub,int len,TreeNode* &tree){
        if((S[0]=='#')||len==0) //对特殊情况进行分析,例如输入空数组,或者'#'开头的数组
            return ;
        if(sub>=len) //超过数组长度
            return ;
        if(S[sub]=='#')
        {
            tree=NULL;
        }
        else{
            tree=(TreeNode*)malloc(sizeof(TreeNode));
            tree->val=(S[sub]);
            CreateBiTree(S,++sub,len,tree->left);  //建立左子树
            CreateBiTree(S,++sub,len,tree->right); //建立右子树
        }
    }
    
    void Print(TreeNode* p)
    {
        if (NULL == p)
            return;
        cout << " "<<p->val; //前序输出  1 2 4 3
        Print(p->left);
        Print(p->right);
    }
    
    int main()
    {
        TreeNode* root;
        int data[] = { 1, 2,'#',4,'#','#',3,'#','#'};
        int len=sizeof(data)/sizeof(int);
        int *sub,a=0;
        sub=&a;
        CreateBiTree(data,*sub,len,root);
        Print(root); 
        return 0;
    }
    

    // 3、后序递归创建
    输入后序数据创建:对于前序、中序、后序三种遍历二叉树的方法只用改动打印与遍历左右子树位置修改下皆可以;那是不是创建也是如此?
    下面进行分析下:对于同样的二叉树,
     前序创建输入数据 data[] = { 1, 2,’#’,4,’#’,’#’,3,’#’,’#’}
     中序创建输入数据 data[] = {’#’,2,’#’,4,’#’,1,’#’,3,’#’}
     后序创建输入数据 data[] = { ‘#’,’#’,’#’,4, 2,’#’,’#’,3,1}
    可以看书中序、后序都是搜索到空才返回,所以都是’#‘开头的输入,对于下述if语句中,程序开始运行 tree=NULL;成立程序直接异常结束,就算加入判断机制跳过’#’,此时树也改变了。

       if(S[sub]=='#')
        {
            tree=NULL;
        }
    

    对于此那输入后序数据是否不能创建了,通过分析其输入数据中可以发现,数据从后面逆着看是按照
    根结点 -> 右结点 ->左节点 的顺序。我们可以参照前序遍历的方法将构建右子书与左子树顺序改变,并将输入数据顺序逆着输入即可创建出所需二叉树。

    #include <iostream>
    #include <string>
    using namespace std;
    struct TreeNode {
        int val;
        TreeNode *left;
        TreeNode *right;
        TreeNode(int x) : val(x), left(NULL), right(NULL) {}
    };
    
    void CreateBiTree(int *S,int &sub,int len,TreeNode* &tree){
        if((S[len]=='#')||len==0) //对特殊情况进行分析,例如输入空数组,或者'#'开头的数组
            return ;
        if(sub<=0) //超过数组长度
            return ;
        if(S[sub]=='#')
        {
            tree=NULL;
        }
        else{
            tree=(TreeNode*)malloc(sizeof(TreeNode));
            tree->val=(S[sub]);
            CreateBiTree(S,--sub,len,tree->right);  //建立右子树
            CreateBiTree(S,--sub,len,tree->left);   //建立左子树
        }
    }
    
    void Print(TreeNode* p)
    {
        if (NULL == p)
            return;
        cout << " "<<p->val;  //前序输出  1 2 4 3
        Print(p->left);
        Print(p->right);
    
    }
    
    int main()
    {
        TreeNode* root;
        int data[] = { '#','#','#',4, 2,'#','#',3,1};
        int len=sizeof(data)/sizeof(int);
        int *sub,a=len-1;
        sub=&a;
        CreateBiTree(data,*sub,len,root);
        Print(root);
        return 0;
    }
    

    // 4、中序递归创建
    输入中序数据创建:中序输入数据 data[] = {’#’,2,’#’,4,’#’,1,’#’,3,’#’}
    中序递归创建放在最后是因为目前暂时没有找到合适方法进行创建。
    分析原因如下:
      一、对于数据 中序输入数据其开头是遍历到左子树为空才开始返回,结尾是遍历到右子树为空才开始返回,所以数据前后都是#’,与分析后序创建时一样。对于下述if语句中,程序开始运行 tree=NULL;成立程序直接异常结束,中序前后都是所以逆序也无法创建。
      二、对于中序输入数据 data[] = {’#’,2,’#’,4,’#’,1,’#’,3,’#’} 
      我们可以试着画出二叉树:创建二叉树
      可见画出的两组二叉树都满足中序输入要求,中序遍历的数据不可以确定唯一一棵二叉树,怎么来创建出来一棵唯一的树。


    * 至此,四种基本构建二叉树的方法分析完,大家对中间代码或者分析有意见的可以评论区留言,不知道中序输入数据有没有人可以构建出来。。。

    展开全文
  • C++数组输入与输出

    2021-10-16 21:44:03
    int s[10]; for (int i = 0; i < 10; i++) { cin >> s[i]; } for (int i = 0; i < 10; i++) { cout << s[i]<<" "; }
    int s[10];
    for (int i = 0; i < 10; i++)
    {
    	cin >> s[i];
    }
    for (int i = 0; i < 10; i++)
    {
    	
    	cout << s[i]<<" ";
    }
    

    在这里插入图片描述

    展开全文
  • C++数组输入处理

    千次阅读 2020-08-27 17:40:22
    输入数据形如: [1,1,1,1,2,1,1],[5,2,5,4,5,1,6] #include <iostream> #include <stdio.h> #include <vector> using namespace std; int main(){ vector<int> vec1; vector<int>...

    输入数据形如:
    [1,1,1,1,2,1,1],[5,2,5,4,5,1,6]

    #include <iostream>
    #include <stdio.h>
    #include <vector>
    
    using namespace std;
    
    int main(){
        vector<int> vec1;
        vector<int> vec2;
        int num;
        char ch;
        // 当前录入向量,true:vec1,false:vec2
        int inputVec = true;
        
        while(scanf("%c",&ch)!=EOF){
            if(ch=='['||ch==','){
                cin >> num;
                if(inputVec)
                    vec1.push_back(num);
                else
                    vec2.push_back(num);
            }else{
                if(scanf("%c",&ch)!=EOF && ch==','){
                    inputVec = false;   // 切换录入向量
                    continue;
                }else{
                    break;
                }
            }
        }
        
    }
    
    展开全文
  • C++实现数组

    2015-12-11 19:44:05
    C++实现数组类,获取数组长度,数组输入数组的输出,数组的复制。
  • C++输入数组并进行操作问题C++按从大到小的顺序输入若干个整数,可以有重复,打印输出其中第一大和第二大的数(按从大到小的顺序,把所有重复的数都打印出来)。 C++按从大到小的顺序输入若干个整数,可以有重复,...
  • C++字符数组输入输出 字符数组输入输出可以有两种方法: 1) 逐个字符输入输出。 2) 将整个字符串一次输入或输出。例如有以下程序段: char str[20]; cin>>str; //用字符数组输入字符串 cout<<str; ...
  • 该程序将 BMP/TIFF/JPG/PNG 文件转换为嵌入的 C/C++ 字节数组。 当您想在显示器上显示单色图像时,这非常有用。 它在数据数组生成之前将您的图像转换为单色。 源图像中较暗的颜色将产生“开”像素,而较亮的颜色将...
  • C++输入动态数组

    2021-03-17 16:29:53
    #include<stdio.h> #include<iostream> #include<vector> using namespace std; int main(){ int a; vector<int> v; while(cin>>a) { v.push_back(a); if(cin.getchar()=='\...&
  • C/C++ 字符数组输入输出

    千次阅读 2018-03-22 20:42:07
    字符数组输入除了使用scanf外,还可以使用getchar或者gets;其输出除了使用printf外,还可以使用putchar或者puts。(1)scanf输入,printf输出scanf对字符串的输入有%s和%c两种格式。%c格式用来输入单个字符,它...
  • 很清楚展现了数组的定义, 初始化, 输入和输出 ,字符数组的应用,以及多维数组应用。
  • python调用c++传递数组

    千次阅读 2019-12-25 14:33:36
    受限于python性能劣势,一般耗cpu的操作(如:视频编解码),多采用c/c++编写。供python调用。本文正是基于python调用c/c++库遇到过得的问题,作的一些记录。...采用数组,关键代码如下: Python: C++: ...
  • C++输入一个数组

    千次阅读 2021-04-03 16:36:01
    template < typename T > void input(T & v, string text = "") { cout << text; cin >...void input(T * v_beg, T * v_end, string * t_beg = nullptr, string * t_end = nullptr) ...&
  • C++输入未知长度的数组

    万次阅读 多人点赞 2019-06-23 18:33:07
    假如要输入一组数字进行排序,但是不知道有多少个数字 静态数组int array[10],它的长度必须是个常数才可以定义。如果知道数组长度n,可以先cin>>n;然后用动态数组int* array = new int[n]。但是如果不知道...
  • //从输入创建数组大小,记得最后要删除数组 int *p = (int *)malloc(n*sizeof(int));/*或者这样创建从输入确定数组大小*/ int *pp = (int *)calloc(n*sizeof(int),0); //............ free...
  • C++ 输入一行int数组

    万次阅读 多人点赞 2018-08-03 12:11:34
    C++中,关于输入一行char数组,我们可以用get()或者getline(),但这两个函数的参数却只能是字符(串)型变量,而不能是整型变量。那么如果要输入一行(未知具体有多少个变量输入)整型变量,该如何呢?可以用...
  • C++动态数组模板实现

    2014-06-01 22:49:24
    课本内容简单实现,通过动态数组模板
  • (C++)字符数组的四种输入输出方式

    千次阅读 2021-03-19 19:57:31
    //字符数组的3种输入输出方式 int main(){ //1.scanf/printf+%s char str_1[50]; printf("%s","请输入第一个字符串:\n"); scanf("%s",str_1);//以空格或换行识别一个字符串的结束 pr..
  • C++字符数组输入输出

    千次阅读 2017-08-03 11:13:04
    字符数组输入输出可以有两种方法: 1) 逐个字符输入输出。 2) 将整个字符串一次输入或输出。例如有以下程序段: char str[20]; cin>>str; //用字符数组输入字符串 cout 在运行时输入一个字符串,...
  • C++学习笔记】数组输入

    千次阅读 2017-05-02 10:36:32
    字符串在C++中是特殊的存在(很多字符串函数,用字符串比用字符数组更方便,但是也导致字符串的使用方法和其他数组不同),因此在讨论数组问题是,都会把字符串单独拉出来说。 一、非字符串的输入方法 cin>>a[i]; ...
  • //怎么改这条语句,是fullname输入为空时,退出循环 while(pa[i].fullname!=NULL&&i { cout; cin>>pa[i].hobby; cout; cin>>pa[i].opplevel; i++; cout; cin>>pa[i].fullname; } cout; return i; } void display1...
  • 正常情况下,我们要从键盘读一个数组,一般会先告诉你一个数组大小size,然后可以创建相应的数组a[size](注:C++11允许变量作为数组长度)或者建立vector(size). 然后就可以用一个size次的循环正好把size个数组元素...
  • C++数组大小通过输入确定

    千次阅读 2018-03-28 10:11:50
    在做一道算法题时,需要通过输入确定数组大小,此时不能通过cin&gt;&gt;n;int v[n];(因为这是静态数组,所以需要使用动态数组):一维:cin&gt;&gt;n,int *a=new int[n]运行时才知道大小为n;注意不要...
  • 数组C++语言重要的数据结构,对它的一些基本操作要熟练掌握。那么,今天我们就来讨论,怎么使用冒泡排序的方法,把数组元素从小到大重新排列? 案例 题目描述 对数组的元素按从小到大进行排序。 有两行 第一行有一...
  • #include<iostream>..."请输入数组的长度n:"<<endl; cin>>n; int c[n]; //定义数组 for(int i = 0; i < n; i++){ cin>>c[i]; //给数组赋值 } for(int j=0;j<n;j++){ //
  • c++中利用vector创建并输入一维数组 一维数组: vector<int> a; int b[5] = {1,2,3,4,5}; a.push_back(b); c++中利用vector创建并输入二维数组时不能利用传统的输入方法cin>>要利用到vector创建一维...
  • C++ char数组和char*的输入

    千次阅读 2021-03-23 10:51:08
    int main(){ char* s1 = "abc"; cin >> s1; // error cout << s1; char s2[10]; // ok cin >> s2; cout << s2; int n = 10; char* s3 = new char[n]; //ok cin >...}
  • C++: 数组初始化

    2021-04-25 21:24:56
    文章目录栈动态数组赋值memsetfill 栈 数组是底层数据类型,存放在栈中,其内存的分配和释放完全由系统自动完成. 通过如下代码初始化一个数组,初始化的规则就是不足数组大小的按默认值补位 int a[5]; //int默认0 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 265,696
精华内容 106,278
关键字:

c++输入数组

c++ 订阅
友情链接: C51-i2c.zip