数据结构算法练习

Posted 黑胡子大叔的小屋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构算法练习相关的知识,希望对你有一定的参考价值。

数据结构与算法

栈部分

顺序栈

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MaxSize 10
typedef struct arraystack
{
    int Data[MaxSize];   // 存储元素的数组
    int topIdx;       //栈顶指针
}Node;
//入栈
void push(struct arraystack *node,int value){
    node->Data[node->topIdx] = value;
    node->topIdx++;
}
//弹栈
void pop(Node node){
    node.topIdx--;
}
//栈展示
void show(Node node){
    int i;
    for(i = 0; i < node.topIdx; i++){
        printf("value: %d \\n",node.Data[i]);
    }
}
//判断栈空      返回0为空  非0为不空
int stackempty(Node node){
    printf("node.topIdx:%d\\n",node.topIdx);
    if(node.topIdx != 0){
        return 1;
    }
    return 0;
}
//判断栈满      返回0为满 非零为不满
int stackfull(Node node){
    if(node.topIdx != MaxSize){
        return 1;
    }
    return 0;
}
int main(){
    Node node;
    node.topIdx = 0;
    int value,j;
    int empty,full;
    int num;
    empty = stackempty(node);
    if(empty == 0){
        printf("栈空!\\n");
    }else{
        printf("栈非空:%d\\n",empty);
    }
    printf("开始键入个数:\\n");
    scanf("%d",&num);
    for(j = 0; j < num;j++){
        full = stackfull(node);
        if(full == 0){
            printf("栈满!topindex为:%d\\n",node.topIdx);
        }else{
            printf("请输入:");
            scanf("%d",&value);
            push(&node,value);
        }
    }
    empty = stackempty(node);
    if(empty != 0){
        printf("栈不空!\\n");
    }

    show(node);
}

队列

顺序队列

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MaxLen 20
typedef struct Query{
    int data[MaxLen];
    int front;
    int rear;
}*Q;
//初始化队列
void Init(Q query){
    query->front=0;
    query->rear=0;
}
//入队
int InQuery(Q query,int value){
    int ret = 0;

    if(query->rear == MaxLen){
        printf("队列满");
        ret = 1;
    }
    printf("入队:%d\\n",value);
    query->data[query->rear++] = value;
error:
    return ret;
}
//出队
int OutQuery(Q query){
    int ret = 0;
    printf("出队数据:%d \\n",query->data[query->front]);
    if(quer->rear == 0){
        printf("队列空!");
        ret = 1;
        goto error;
    }
    query->front ++;
error:
    return ret;
}
//输出
void Show(Q query){
    int i;
    for(i = query->front;i < query->rear; i++){
        printf("输出[%d]: %d \\n",i,query->data[i]);
    }
}
int main(){
    struct Query query;
    Init(&query);
    InQuery(&query,1);    
    InQuery(&query,2);    
    InQuery(&query,3);    
    InQuery(&query,4);    
    InQuery(&query,5);
    printf("出队\\n");    
    OutQuery(&query);
    Show(&query);
}

以上是关于数据结构算法练习的主要内容,如果未能解决你的问题,请参考以下文章

以下代码片段的算法复杂度

Python练习册 第 0013 题: 用 Python 写一个爬图片的程序,爬 这个链接里的日本妹子图片 :-),(http://tieba.baidu.com/p/2166231880)(代码片段

有人可以解释啥是 SVN 平分算法吗?理论上和通过代码片段[重复]

片段(Java) | 机试题+算法思路+考点+代码解析 2023

片段着色器中未使用纹理数据 - OpenGL

数据结构和算法三个“二分查找”练习