IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 数据结构期末考试算法总结 -> 正文阅读

[数据结构与算法]数据结构期末考试算法总结

1.设计一个高效的算法,从顺序表L中删除所有值为x的元素,要求时间复杂度为O(n),空间复杂度为O(1).

//p71
#define MAXSIZE 100
typedef struct
{
    ElemType elem[MAXSIZE];
    int last;
}SeqList;

void delx(SeqList * L,ElemType x)
{
    int i = 0;
    int j = 0;
    while(i <= L->last)
    {
        if(L->elem[i]!=x)
        {
            L->elem[j] = L->elem[i];
            i++;
            j++;
        }
        else
            i++;
        
    }
    L->last = j-1;
}

2.算法实现带头节点单链表的就地址逆置问题。

typedef struct Node
{
    ElemType data;
    struct Node * next;
}Node, *LinkList;

void ReverseList(LinkList L)
{
    Node * p;
    Node * q;
    p = L->next;
    L->next = NULL;
    while(p!=NULL)
    {
        q = p->next;
        p->next = L->next;
        L->next = p;
        p = q;
    }
}

3.已知一个带头结点的单链表L,其结点的元素值以非递减顺序排列,设计算法删除该单链表中元素值重复的结点

typedef struct Node
{
    ElemType data;
    struct Node * next;
}Node, *LinkList;

void del(LinkList L)
{
    Node * p;
    Node * q;
    p=L->next;
    if(p==NULL)
        return error;
    while(p->next != NULL)
    {
        if(p->data != p->next->data)
            p = p->next;
        else
        {
            q = p->next;
            p->next = q->next;
            free(q);
        }
    }
}

4.以二叉链表做存储结构,编写算法输出二叉树中叶子结点(先序)。

typedef struct Node
{
    DataType data;
    struct Node * LChild;
    struct Node * RChild;

}BiTNode,*BiTree;

void InOrder(BiTNode root)
{
    if(root != NULL)
    {
        InOrder(root->LChild);
        Visit(root->data);
        InOrder(root->RChild);
    }
}

5.以二叉链表做存储结构,编写递归算法,求二叉树的高度(后序)。

typedef struct Node
{
    DataType data;
    struct Node * LChild;
    struct Node * RChild;

}BiTNode,*BiTree;

int PostTreeDepth(BiTree bt)
{
    int hl,hr,max;
    if(bt!=NULL)
    {
        hl = PostTreeDepth(bt->LChild);
        hr = PostTreeDepth(bt->RChild);
        max =hl>hr?hl:hr;
        return(max+1);
    }
    else
        return(0);
}

6.以二叉链表做存储结构,编写递归算法,求二叉树的高度(先序)。

typedef struct Node
{
    DataType data;
    struct Node * LChild;
    struct Node * RChild;

}BiTNode,*BiTree;

void PreTreeDepth(BiTree bt,int h)
{
    //先序遍历求二叉树bt高度的递归算法,h为bt指向结点所在层次,初值为1
    //depth 为当前求得的最大层次,为全局变量,调用前初值为0
    if(bt!=NULL)
    {
        if(h>depth)
        {
            depth = h;
        }
        PreTreeDepth(bt->LChild,h+1);
        PreTreeDepth(bt->RChild,h+1);
    }
}

7.折半查找法。

# define LIST_SIZE 20
typedef struct
{
    KeyType key;
    OtherType other_data;
}RecordType;

typedef struct
{
    RecordType r[LIST_SIZE+1]// r[0] 为工作单元
    int length;
} RecordList;

int BinSrch(RecordList l,KeyType k)
{
    int low = 1;
    int hight = l.length;//设置区间初值
    while(low<=hight)
    {
        mid=(low+hight) / 2;
        if(k==l.r[mid].key)
            return(mid);
        else if(k<l.r[mid].key)
            hight = mid-1;
        else
            low =mid+1;
    }
    return (0);
}
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-09-12 13:24:22  更:2021-09-12 13:26:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 10:49:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码