| 网站首页 | 资讯 | Hack | 漏洞 | 网管 | 编程 | 培训 | 品黑页 | 软件 | 论坛 | 动画 | 视频 | 经典 | 教学站 | 黑客点睛 | 
服务导航 我要发布 主力频道 空间域名 精华收集 服务器出租 黑客培训 光盘刻录 特色服务 解决方案 我要投诉
您现在的位置: 华夏黑客同盟 >> 编程 >> 数据库 >> 正文 用户登录 新用户注册
数据结构与算法基本程序         ★★★ 【字体:
数据结构与算法基本程序合集
作者:cobby 文章来源:编程中国 点击数: 更新时间:2008-10-13

前言:这些是前几年我在大专教书时,数据结构课程中给学生写的学习例程,对于初学者有一定帮助。在此收集到一起,当个共享贴贡献给广大网友和编程爱好者。一般程序都不难也不大,并且所有例程均有较详细注释,适合自学。中间有一个“哈夫曼编码”,程序较大,希望能给大家一点启示。以下所有程序均在VC++6.0开发环境中调试通过,运行正常。有任何疑问可以“另外”发贴讨论。更多内容请访问我的博客http://jiaxuanyao.blogms.com。

自认为本贴内容充实,对网友会所很大帮助,请版主或者管理员置顶加精,谢谢。


数据结构与算法基本程序目录
一、    线性表及其操作
1、    尾插法建立一个单链表,并按顺序输出
2、    单链表的元素查找,按内容查找
3、    元素插入操作
4、    按内容元素删除操作
5、    按位置删除元素
6、    建立双向链表
7、    单链表就地逆置
8、    约瑟夫环问题
二、    栈及其操作
1、    建立堆栈
2、    进栈与出栈
3、    栈的应用,括号匹配
三、    队及其操作
1、    链队列的建立
2、    入队和出队
3、    循环队列建立
4、    循环队列的入队和出队操作
四、    串及其操作
1、    串的朴素匹配
五、    树(二叉树)及其操作
1、    二叉排序树
2、    哈夫曼编码
六、    排序
1、    冒泡排序
2、    直接选择排序法


一、线性表及其操作

//All copyright are preserved by cobby
/*尾插法建立一个单链表,并按顺序输出*/

#define NULL 0            /*宏定义*/
typedef struct node        /*定义结点类型的数据结构*/
{
    char c;            /*数据域,类型为字符型*/
    struct node *next;    /*指针域,类型为本结构体类型*/
}*L;            /*类型重定义,即Node和*L和struct node等价*/

main()
{
    L l,p,q;        /*用指针类型定义三个结点类型的指针*/
    char ch;
    l=(L)malloc(sizeof(L));    /*分配内存空间*/
    l->c='\0';            /*为头结点的数据域赋值,值为空*/
    l->next=NULL;            /*指明下一个结点目前不存在*/
    q=l;                /*q为游动指针,链表结点的连结要用*/
    printf("Input a character:\n");
    scanf("%c",&ch);
    getchar();        //此语句用来吸收键盘输入的回车符,没有其它含义
    while(ch!='!')            /*输入!表示输入结束*/
    {
        p=(L)malloc(sizeof(L));    /*为新输入的数据分配内存空间*/
        p->c=ch;
        p->next=NULL;            /*新输入的结点在链表的最后,即它的后面没有其它元素*/
        q->next=p;            /*q用于将上一个元素链接至当前新元素*/
        q=p;                /*q自己移到当前最后一个元素,以备继续链接所用*/
        scanf("%c",&ch);
        getchar();
    }
    q=l;                /*输入整个链表前,先将q移到链表头,l一般不动*/
    while(q->next!=NULL)        /*若q所指向的元素后面还有其它元素,则将该元素的数据输出*/
    {
        printf("%c-->",q->next->c);    /*q->next->c表示q所指向的下一个元素的数据*/
        q=q->next;            /*完成该元素的输出后,q移至下一个元素重复输出操作*/
    }
}


//All copyright are preserved bycobby
/*单链表的元素查找,按内容查找*/


#define NULL 0            /*宏定义*/
typedef struct node        /*定义结点类型的数据结构*/
{
    char c;            /*数据域,类型为字符型*/
    struct node *next;    /*指针域,类型为本结构体类型*/
}*L;            /*类型重定义,即Node和*L和struct node等价*/

main()
{
    L l,p,q;        /*用指针类型定义三个结点类型的指针*/
    char ch;
    int n;
    l=(L)malloc(sizeof(L));    /*分配内存空间*/
    l->c='\0';            /*为头结点的数据域赋值,值为空*/
    l->next=NULL;            /*指明下一个结点目前不存在*/
    q=l;                /*q为游动指针,链表结点的连结要用*/
    printf("Input a character:\n");
    scanf("%c",&ch);
    getchar();
    while(ch!='!')            /*输入!表示输入结束*/
    {
        p=(L)malloc(sizeof(L));    /*为新输入的数据分配内存空间*/
        p->c=ch;
        p->next=NULL;            /*新输入的结点在链表的最后,即它的后面没有其它元素*/
        q->next=p;            /*q用于将上一个元素链接至当前新元素*/
        q=p;                /*q自己移到当前最后一个元素,以备继续链接所用*/
        scanf("%c",&ch);
        getchar();
    }
    q=l;                /*输入整个链表前,先将q移到链表头,l一般不动*/
    while(q->next!=NULL)        /*若q所指向的元素后面还有其它元素,则将该元素的数据输出*/
    {
        printf("%c-->",q->next->c);    /*q->next->c表示q所指向的下一个元素的数据*/
        q=q->next;            /*完成该元素的输出后,q移至下一个元素重复输出操作*/
    }

    /*--------以上为建立一个单链表-------------*/


    printf("\nInput a character you wanna find\n");
    scanf("%c",&ch);
    printf("\nthe character you wanna find is %c\n",ch);
    q=l->next;        /*q移至头结点的后一个元素,即实际第一个数据点*/
    n=1;    //位置计数器
    while(q!=NULL)        /*若q不为空,即该结点存在*/
    {
        if(q->c==ch)    /*字符匹配*/
            printf("character found in position %d\n",n);
        q=q->next;    /*移至下一个元素继续查找*/
        n++;
    }
}


//All copyright are preserved bycobby
/*元素插入操作*/

#define NULL 0            /*宏定义*/
typedef struct node        /*定义结点类型的数据结构*/
{
    char c;            /*数据域,类型为字符型*/
    struct node *next;    /*指针域,类型为本结构体类型*/
}Node,*L;            /*类型重定义,即Node和*L和struct node等价*/

main()
{
    L l,p,q;        /*用指针类型定义三个结点类型的指针*/
    char ch;
    int pos,n;
    l=(L)malloc(sizeof(Node));    /*分配内存空间*/
    l->c='\0';            /*为头结点的数据域赋值,值为空*/
    l->next=NULL;            /*指明下一个结点目前不存在*/
 

[1] [2] [3] [4] [5] [6] [7] [8] [9] [10]  ... 下一页  >> 

责任编辑:朱倩  联系方式  Email:朱倩
电话:51228163
  • 上一篇编程:

  • 下一篇编程: 没有了
  • (只显示最新5条。评论内容只代表网友观点,与本站立场无关!)
    姓 名:
    * 游客填写  ·注册用户
    主 页:
    评 分:
    1分 2分 3分 4分 5分
    评论内容:
    验证码: *
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。
  • 最新hack更新
    最新推荐资讯
    相关编程
    数据结构与算法基本程序
    MD5算法汇编代码
    MD5算法汇编代码[着重优化]
    VB编程经常用到的算法
    数据结构与算法基本程序
    联众密码的逆向算法
    从命令行登陆QQ(QQ密码算法)
    一个最优的算法
    Visual C# 诠释常用排序算法
    封装的变化之排序算法中的封装
    最新会员软件
    最新推荐视频
    最新推荐动画

    Copyright @ 2005 77169.Net Inc. All rights reserved. 华夏黑客同盟 版权所有
    北京市电信通提供网络带宽

    mailto:webmaster@77169.net
    咨询QQ号:836982 / 59280880
    联系站长 QQ38588913
    热线电话: 86-10-67634029/676229433
    京ICP证041431号