注册 登录
查看: 2518|回复: 2
打印 上一主题 下一主题

C语言高级教程 - 指针和结构体

[复制链接]

该用户从未签到

3524

主题

3538

帖子

67万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
673178
QQ
跳转到指定楼层
楼主
发表于 2018-12-13 12:56:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1.PonC_指针-1
10.PonC_字符串函数-1
11.PonC_字符串函数-2
12.PonC_字符串函数-3
13.C语言字符串的缺点
14.MCU_51_结构
15.MCU_51_结构数组_结构与函数
2.PonC_指针-2
3.PonC_指针实例
4.PonC_指针运算
5.PonC_指针和函数
6.dk2j_cpp_函数指针
7.PonC_转换表
8.PonC_指针和数组-1
9.PonC_指针和数组-2




游客,如果您要查看本帖隐藏内容请回复




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
java无忧网(http://www.javawyw.com),专业提供Java大作业,小作业,课程设计,毕业设计源码,答辩辅导,作业排错,bug修复,专业解答,远程部署运行项目等服务
本网站所有源码,保证能运行!
QQ:1399491757
回复

使用道具 举报

  • TA的每日心情
    开心
    2018-12-24 10:52
  • 签到天数: 1 天

    [LV.1]初来乍到

    0

    主题

    4

    帖子

    16

    积分

    新手上路

    Rank: 1

    积分
    16
    沙发
    发表于 2018-12-24 11:09:09 | 只看该作者
    这个我想要
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2019-7-9 22:59
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    0

    主题

    11

    帖子

    71

    积分

    注册会员

    Rank: 2

    积分
    71
    板凳
    发表于 2019-6-17 22:21:43 | 只看该作者

    #include <iostream>
    #include<stdio.h>
    using namespace std;

    struct node {
        int parent;
        int lchild,rchild;
        int weight;
    };

    node* array;
    int select_min(int n) {

        int minIndex;
        for(int i=0;i<2*n-1;i++){
            if(array[i].parent==-1&&array[i].weight!=0) {
                minIndex=i;break;
            }
        }
        for(int i=0; i<2*n-1; i++) {
            if(array[i].parent==-1&&array[i].weight!=0) {
                if(array[i].weight<array[minIndex].weight)
                    minIndex=i;
            }
        }
        array[minIndex].parent=1;
        return minIndex;
    }

    void CreatHuffman(int *w,int n) {
        for(int i=0; i<2*n-1; i++) {
            array[i].parent=-1;
            array[i].lchild=-1;
            array[i].rchild=-1;
            array[i].weight=w[i];
        }
        for(int j=n; j<2*n-1; j++) {
            int min_lchild=select_min(n);
            int min_rchild=select_min(n);
            array[j].lchild=min_lchild;
            array[j].rchild=min_rchild;
            array[j].weight=array[min_lchild].weight+array[min_rchild].weight;
            array[min_lchild].parent=j;
            array[min_rchild].parent=j;
        }

    }

    void showData(int n) {
        for(int i=0; i<2*n-1; i++) {
            cout<<array[i].weight<<","<<array[i].parent<<","<<array[i].lchild<<","<<array[i].rchild<<endl;
        }

    }

    int main() {

        int n;
        while(cin>>n) {
            array=new node[2*n-1];
            int *w=new int[2*n-1];
            for(int i=0; i<n; i++) {
                char ch;
                cin>>ch>>w[i];
            }
            for(int i=n; i<2*n-1; i++)
                w[i]=0;


            CreatHuffman(w,n);
            showData(n);
            cout<<endl;
        }
        return 0;
    }
    #include <iostream>
    #include<stdio.h>
    using namespace std;

    struct node {
        int parent;
        int lchild,rchild;
        int weight;
    };

    node* array;
    int select_min(int n) {

        int minIndex;
        for(int i=0;i<2*n-1;i++){
            if(array[i].parent==-1&&array[i].weight!=0) {
                minIndex=i;break;
            }
        }
        for(int i=0; i<2*n-1; i++) {
            if(array[i].parent==-1&&array[i].weight!=0) {
                if(array[i].weight<array[minIndex].weight)
                    minIndex=i;
            }
        }
        array[minIndex].parent=1;
        return minIndex;
    }

    void CreatHuffman(int *w,int n) {
        for(int i=0; i<2*n-1; i++) {
            array[i].parent=-1;
            array[i].lchild=-1;
            array[i].rchild=-1;
            array[i].weight=w[i];
        }
        for(int j=n; j<2*n-1; j++) {
            int min_lchild=select_min(n);
            int min_rchild=select_min(n);
            array[j].lchild=min_lchild;
            array[j].rchild=min_rchild;
            array[j].weight=array[min_lchild].weight+array[min_rchild].weight;
            array[min_lchild].parent=j;
            array[min_rchild].parent=j;
        }

    }

    void showData(int n) {
        for(int i=0; i<2*n-1; i++) {
            cout<<array[i].weight<<","<<array[i].parent<<","<<array[i].lchild<<","<<array[i].rchild<<endl;
        }

    }

    int main() {

        int n;
        while(cin>>n) {
            array=new node[2*n-1];
            int *w=new int[2*n-1];
            for(int i=0; i<n; i++) {
                char ch;
                cin>>ch>>w[i];
            }
            for(int i=n; i<2*n-1; i++)
                w[i]=0;


            CreatHuffman(w,n);
            showData(n);
            cout<<endl;
        }
        return 0;
    }
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    快速回复 返回列表 返回顶部