• 数据结构学习(1)


    数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成。

    1、线性结构

      a、连续存储 数组

         b、离散存储 链表

    常用的线性数据结构有栈、队列:

    栈的c语言描述:

    #include<stdio.h>
    #include<malloc.h>
    #define DataType int
    #define MAXSIZE 1024
    typedef struct
    {
    DataType data[MAXSIZE];
    int top;
    }SeqStack;
    SeqStack *Init_SeqStack()//栈初始化
    {
    SeqStack *s;
    s=(SeqStack *)malloc(sizeof(SeqStack));
    if(!s)
    {
    printf("空间不足
    ");
    return NULL;
    }
    else
    {
    s->top=-1;
    return s;
    }
    }
    int Empty_SeqStack(SeqStack *s)//判栈空
    {
    if(s->top==-1)
    return 1;
    else
    return 0;
    }
    int Push_SeqStack(SeqStack *s,DataType x)//入栈
    {
    if(s->top==MAXSIZE-1)
    return 0;//栈满不能入栈
    else
    {
    s->top++;
    s->data[s->top]=x;
    return 1;
    }
    }
    int Pop_SeqStack(SeqStack *s,DataType *x)//出栈
    {
    if(Empty_SeqStack(s))
    return 0;//栈空不能出栈
    else
    {
    *x=s->data[s->top];
    s->top--;
    return 1;
    }//栈顶元素存入*x,返回
    }
    DataType Top_SeqStack(SeqStack *s)//取栈顶元素
    {
    if(Empty_SeqStack(s))
    return 0;//栈空
    else
    return s->data[s->top];
    }
    int Print_SeqStack(SeqStack *s)
    {
    int i;
    printf("当前栈中的元素:
    ");
    for(i=s->top;i>=0;i--)
    printf("%3d",s->data[i]);
    printf("
    ");
    return 0;
    }
    int main()
    {
    SeqStack *L;
    int n,num,m;
    int i;
    L=Init_SeqStack();
    printf("初始化完成
    ");
    printf("栈空:%d
    ",Empty_SeqStack(L));
    printf("请输入入栈元素个数:
    ");
    scanf("%d",&n);
    printf("请输入要入栈的%d个元素:
    ",n);
    for(i=0;i<n;i++)
    {
    scanf("%d",&num);
    Push_SeqStack(L,num);
    }
    Print_SeqStack(L);
    printf("栈顶元素:%d
    ",Top_SeqStack(L));
    printf("请输入要出栈的元素个数(不能超过%d个):
    ",n);
    scanf("%d",&n);
    printf("依次出栈的%d个元素:
    ",n);
    for(i=0;i<n;i++)
    {
    Pop_SeqStack(L,&m);
    printf("%3d",m);
    }
    printf("
    ");
    Print_SeqStack(L);
    printf("栈顶元素:%d
    ",Top_SeqStack(L));
    return 0;
    }

    2、非线性结构   树、图:

  • 相关阅读:
    LeetCode 183. Customers Who Never Order (从不订购的客户)
    LeetCode 182. Duplicate Emails (查找重复的电子邮箱)
    LeetCode 181. Employees Earning More Than Their Managers (超过经理收入的员工)
    LeetCode 176. Second Highest Salary (第二高的薪水)
    CMake Tutorial
    osx c++连接mysql
    为mysql 表重新设置自增的主键id
    更改pandas dataframe 列的顺序
    会场安排问题
    nlpir分词器过期处理
  • 原文地址:https://www.cnblogs.com/weilq/p/3435867.html
Copyright © 2020-2023  润新知