数据结构1_160801



线性表是一对一的

分为两种1 顺序存储 (增加删除插入的操作都比较麻烦)2 链式存储

链式存储:1 单链表 2 双链表

单双链表又分别分为 循环&不循环, 有头&无头

栈和队列是有指向和特定的操作线性表

栈:先进后出 FILO

队列:FIFO先进先出

树是一对多的

树要常用递归思想,递归一般设计上限,为了保证栈不破裂

图是多对多的


#include"sqlist.h"
#include<stdio.h>
#include<stdlib.h>
sqlist *sqlist_creat()
{
    sqlist *me;
    me = malloc(sizeof(*me));
    if (me == NULL)
        return NULL;
    me->last = -1;
    return me;

}

void sqlist_display(sqlist* me)
{
    if ( me->last ==-1)
        return ;

    int i ;
    for (i = 0; i<=me->last ; i++)
        printf("%d\t",me->data[i]);

    putchar('\n');

    return ;


}
void sqlist_creat1(sqlist **ptr)
{
      
    *ptr =  malloc(sizeof(**ptr));
    if(*ptr == NULL)
    return ;


    (*ptr)->last = -1;
    return ;
}
int sqlist_insert(sqlist * me,int i, datatype *data)
{

    if(me->last == DATASIZE - 1)
        return -1;

    if(i<0 || i> me->last + 1)
        return -2;

   
   
        int j = me->last;
         for ( j;i<=j;j--)
            me->data[j+1] = me->data[j];

        me->data[i] = *data;
        me->last ++;
   
    return 0;
}


int sqlist_delete(sqlist *me, int i)
{
    if(i<0||i>me->last)
        return -1;
    int j ;
    for (j = i+1; j <= me->last; j++)
        me->data[j-1] = me->data[j];
    me->last --;
    return 0;
}

int sqlist_find(sqlist *me, datatype *data)
{
    int i;
    if(-1 == me->last)
    {
    printf("list is empty!\n");
    return -1;
    }

    for (i = 0; i < me->last;i++)
        if(*data == me->data[i])
            return i;
    return -2;
}

int sqlist_isempty(sqlist *me)
{

    return (-1 == me->last )?0:1;
}

int sqlist_setempty(sqlist *me)
{
    me->last = -1;
    return 0;
}

int sqlist_getnum(sqlist *s)
{
        return s->last +1;
}
int sqlist_destroy(sqlist *me)
{
        free(me);
}

int sqlist_union(sqlist *list1, sqlist *list2)
{
    int i=0;
   
    for(i=0;i<= list2->last;i++)

    if(sqlist_find(list1,&list2->data[i])<0)
        sqlist_insert(list1,0,&list2->data[i]);
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值