jQuery火箭图标返回顶部代码 - 站长素材

数据结构函数

1. 顺序表的查找操作

int LocateElem(SqList L,ElemType e){
    int i;
    for(i=0;i<L.length; i++){
        if(L.elem[i]==e){
            return i+1;
        }
    }
    return 0;
}

2.求顺序表最大值

int GetMax(SqList L)
{
    if(L.length==0) return 0;
    int max = L.elem[0];
    for(int i=1;i<L.length;i++){
        if(max<L.elem[i])
            max = L.elem[i];
    }
    return max;
}

3.单链表遍历

void Traverse(LinkList L)
{
    LinkList p=L->next;
    while(p){
        printf("%d ",p->data);
        p=p->next;
    }
    return;
}

4.求单链表元素序号

int Locate( LinkList L, ElemType e){
    LinkList p = L->next;
    int sum = 1;
    while(p){
        if(p->data == e){
            return sum;
        }
        sum++;
        p=p->next;
    }
    return 0;
}

5.统计单链表元素出现次数

int GetCount ( LinkList L,ElemType e ){
    LinkList p = L->next;
    int sum = 0;
    while(p){
        if(p->data == e)
            sum++;
        p = p->next;
    }
    return sum;
}

6.在带头结点的单链表表尾处插入一个新元素

void insert ( LinkList L,ElemType e){
    LinkList p = L->next;
    LinkList pre =L;
    while(p){
        p=p->next;
        pre = pre->next;
    }
    LinkList s = (LNode *)malloc(sizeof(LNode));
    s->data=e;
    s->next=NULL;
    pre->next=s;
    
}

7. 顺序表替换负数并统计个数

int Replace(SqList &L,int e)
{
    int cnt=0;
    for(int i=0;i<L.length;i++){
        if(L.elem[i]<0){
            cnt++;
            L.elem[i]=e;
        }
    }
    return cnt;
}

8.顺序表替换偶数并统计个数

int Replace(SqList &L,int e)
{
    int cnt=0;
    for(int i=0;i<L.length;i++){
        if(L.elem[i]%2==0){
            cnt++;
            L.elem[i]=e;
        }
    }
    return cnt;
}

9.统计二叉树结点个数

int NodeCount ( BiTree T){
    if(!T) return 0;
    int sum = 1;
    sum += NodeCount(T->lchild);
    sum += NodeCount(T->rchild);
    return sum;
}

10.统计二叉树叶子结点个数

int LeafCount ( BiTree T){
    if(!T) return 0;
    int sum =0;
    if(!T->lchild&&!T->rchild)sum++;
    sum+=LeafCount(T->lchild);
    sum+=LeafCount(T->rchild);
    return sum;
}

11.统计二叉树度为1的结点个数

int NodeCount(BiTree T){
    if(!T) return 0;
    int cnt =0;
    if(T->lchild&&!T->rchild||!T->lchild&&T->rchild) cnt++;
    cnt+=NodeCount(T->lchild);
    cnt+=NodeCount(T->rchild);
    return cnt;
}

12.统计二叉树度为2的结点个数

int NodeCount(BiTree T){
    if(!T) return 0;
    int cnt =0;
    if(T->lchild&&T->rchild) cnt++;
    cnt+=NodeCount(T->lchild);
    cnt+=NodeCount(T->rchild);
    return cnt;
}

13.先序输出叶结点

void PreorderPrintLeaves(BinTree BT)
{
    if(!BT) return;
    if(!BT->Left&&!BT->Right) printf(" %c",BT->Data);
    PreorderPrintLeaves(BT->Left);
    PreorderPrintLeaves(BT->Right);
}

14.后缀表达式

void Suffix(BiTree T){
    if(!T) return;
    Suffix(T->lchild);
    Suffix(T->rchild);
    printf("%c ",T->data);
}

15. 一元多项式正系数项

int PositiveCnt(LinkList L){
    LinkList p = L->next;
    int cnt=0;
    while(p){
        if(p->coef>0){
            printf("%d %d\n",p->coef,p->exp);
            cnt++;
        }
        p=p->next;
    }
    return cnt;
}

16.运算符前缀式

int Prefix(BiTree T){
    if(!T) return 0;
    int cnt =0;
    if(T->data=='+'||T->data=='-') cnt++;
    if(T->lchild&&T->rchild) printf("%c ",T->data);
    cnt+=Prefix(T->lchild);
    cnt+=Prefix(T->rchild);
    return cnt;
}

17.运算符中缀式

int Infix(BiTree T){
    if(!T) return 0;
    int cnt =0;
    if(T->data=='*'||T->data=='/') cnt++;
    cnt+=Infix(T->lchild);
    if(T->lchild&&T->rchild) printf("%c ",T->data);
    cnt+=Infix(T->rchild);
    return cnt++;
}

18.运算符后缀式

int Suffix(BiTree T){
    if(!T) return 0;
    int cnt =0;
    if(T->data=='*'||T->data=='+') cnt++;
    cnt+=Suffix(T->lchild);
    cnt+=Suffix(T->rchild);
    if(T->lchild&&T->rchild) printf("%c ",T->data);
    return cnt++;
}
posted @ 2024-12-30 00:55  时移之人  阅读(39)  评论(0)    收藏  举报
Live2D