拼凑一番代码

 

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

#define LIST_INIT_SIZE  100
#define LISTINCREMENT 10
typedef int elemtype;
#define MAXSIZE 10
typedef int status;

typedef struct LNode {
    elemtype data;
    int* elem;
    struct LNode* next;
    int length;
    int listsize;
    int incrementsize;

}Sqlist, * LinkList;

void Print(Sqlist* L)
{
    L->listsize = MAXSIZE;
    L->incrementsize = LISTINCREMENT;
    L->elem = (int*)malloc(sizeof(int) * L->listsize);
    printf("请输入:");
    L->length = 6;
    for (int i = 0; i < L->length; i++)
    {
        scanf_s("%d  ", &L->elem[i]);
    }
}


 //int orderSearch(int  L[] , int length, int key) {
    // 从前往后扫描list数组,如果有元素的值与key相等,直接返回其位置
    //for (int i = 0; i < length; i++) {
        //if (key == L[i]) {
           // return i;
        //}
    //}

    // 如果扫描完,说明没有元素的值匹配key,返回-1,表示查找失败
    //return -1;
//}

void Printt(Sqlist* L) {
    if (L->length == 0) {
        printf("NULL\n");
    }

    for (int i = 0; i < L->length; i++) {
        printf("%d  ", L->elem[i]);
    }
    printf("\n\n");
}

int compare(elemtype e1, elemtype e2)
{
    if (e1 == e2)
        return 1;
    else
        return 0;
}
//查找操作 
void locateelem_sq(Sqlist L, elemtype e, int (*compare)(elemtype, elemtype))
{
    //在顺序线性表l中查找第一个与元素e满足compare()元素的位置(即返回第一个与e值相等的元素位置)。
   //若存在,返回其在l中的次序。若不存在则返回0 
    int i, * p;
    i = 1;
    p = L.elem;//p为第一个元素的存储位置 
    while (i <= L.length && !(*compare)(*p++, e))    //比较函数不相等返回1,前面去反,不相等为0 
        i++;
    if (i <= L.length)
        printf ("Found!");
    else printf("Not found!");
    printf("\n");
}

//向顺序表第i个位置插入元素 
void ListInsert(Sqlist &L,int i,elemtype e)
{
    elemtype* newbase, * q,* p;
    if (i<1 || i>L.length + 1)printf("错误");
    if (L.length > L.listsize) {
        newbase = (elemtype*)realloc(L.elem, (L.listsize + LISTINCREMENT) * sizeof(elemtype));
        L.elem = newbase;
        L.listsize += LISTINCREMENT;
    }
    q = &(L.elem[4]);
    for (p = &(L.elem[L.length - 1]); p >= q; --p)*(p + 1) = *p;
    *q = 12;
    ++L.length;
    printf("插入成功");
    printf("\n");
}

void  List_Sq(Sqlist& L, int i, elemtype  &e)
{
    elemtype* newbase, * q, * p;
    p = &(L.elem[3]);
    e = *p;
    q = L.elem + L.length - 1;
    for (++p; p <= q; ++p)*(p - 1) = *p;
    --L.length;
    printf("删除成功");
    printf("\n");
}
int main()
{
    Sqlist* L = new Sqlist;
    int e = -1;
    Print(L);
    Printt(L);
    elemtype b[] = { 1 ,- 9, 6, 10, 400, 30, 60 };
    locateelem_sq(*L, 7, compare);
    ListInsert(*L, 5, 12);
    Printt(L);
    List_Sq(*L, 4, e);
    Printt(L);
}

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值