首页 > 其他分享 >20230325

20230325

时间:2023-03-25 17:11:33浏览次数:29  
标签:SeqStack return int top 20230325 SElemType NULL

数据结构remake第三天
栈和串

栈的基本操作

#include <stdio.h>
#include <stdlib.h>

typedef int SElemType;
typedef struct SeqStack
{
    SElemType *data;
    int maxlen;
    int top;
}SeqStack;
SeqStack * InitStack(int maxl)
{
    SeqStack *s = (SeqStack*)malloc(sizeof(*s));
    s->data = (int*)(malloc(sizeof(SElemType)* maxl));
    s->top = -1;
    s->maxlen = maxl;
    return s;
}
void DestoryStack(SeqStack*s)
{
    if(s==NULL)
        return ;
    free(s->data);
    free(s);
}
void ClearStack(SeqStack*s)
{
    if(s==NULL)
        return ;
    s->top=-1;
}
int StackisEmpty(SeqStack*s)
{
    if(s==NULL ||s->top ==-1 )
    {
        return 1;
    }
    return 0;
}
int Stacklength(SeqStack *s)
{
    if(s==NULL)
    {
        return 0;
    }
    return s->top +1;
}
int Push(SeqStack *s ,SElemType x)
{
    if(s==NULL ||s->top == s->maxlen -1)
    {
        return 0;
    }
    s->data[++s->top]=x;
    
    if(s->top==s->maxlen -1)
        return 0;
    else
        return 1;
}
int Pop(SeqStack *s,SElemType *e)
{
    if(s==NULL || s->top == -1)
    {
        return 0;
    }
    
    *e = s->data[s->top--];//3
 
    if(s->top == -1)
        return 0;
    else
        return 1;
}
int GetTop(SeqStack *s,SElemType *e)
{
    if(s==NULL || s->top == -1)
    {
        return 0;
    }
    *e = s->data[s->top];
    return 1;
}
int main()
{
    int n,m=1;
    int x;
    scanf("%d",&n);
    
    SeqStack *s= InitStack(n);
 
    while(m)
    {
        scanf("%d",&x);
        m=Push(s,x);
    }
//
//    m=1;
//    while(m)
//    {
//        int a=0;
//        m=Pop(s,&a);
//        printf("%d ",a);
//    }
//
//    printf("\n");
//
//    ClearStack(s);
//    m=StackisEmpty(s);
//
//    if(m==1)
//        printf("栈已清空!\n");
    
    return 0;
}

串/KMP

//
//  fakeKMP.cpp
//  dataStructure
//
//  Created by noobwei on 2023/3/25.
//

#include <stdio.h>


void get_next(char T[],int *next){
    int i,k;
    i=1;k=0;
    next[1]=0;
    while(i<T[0]){
        if(k==0||T[i]==T[k]){
            ++i;
            ++k;
            next[i]=k;
        }
        else{
            k=next[k];
        }
    }
}
int Index_KMP(char S[],char T[],int pos){
    int i=pos;
    int j=1;
    int next[255];
    get_next(T, next);
    while(i<=S[0]&&j<=T[0]){
        if(j==0||S[i]==T[j]){
            ++i;
            ++j;
        }
        else{
            j=next[j];
        }
    }
    if(j>T[0]){
        return i-T[0];
        }
    else{
        return 0;
    }
}

标签:SeqStack,return,int,top,20230325,SElemType,NULL
From: https://www.cnblogs.com/noobwei/p/17255111.html

相关文章

  • java学习日记20230325-模版设计模式
    模版设计模式利用多态的动态绑定,将通用的方法设计为模版抽象类,通过子类继承重写抽象方法实现模版调用。 父类抽象类abstractpublicclassTemplate{......
  • 20230325 LCD1602
    关于模块式编程:模块化编程是一种编写代码的方法,将大型程序分解成小的、独立的模块,每个模块实现特定的功能,并且可以被其他程序调用和重复使用。这种方法可以提高代码的可维......
  • java学习日记20230325-抽象类
    抽象类:当父类的某些方法需要声明,但是又不确定如何实现时,可以将其声明为抽象方法,那么这个类就是抽象类!所谓抽象方法,就是没有实现的方法;当一个类中存在抽象方法时,需要将......