m0_51126815 2021-10-17 10:06 采纳率: 100%
浏览 100
已结题

如何把伪代码改写成源代码?

Status ListInsert_Sq(SqList &L,int i,int e){//i是在线性表中的位置编号,i从1开始
    if(i<1||i>L.length+1)return ERROR;
    if(L.length>=L.listsize){
        newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCSEMENT)*sizeoff(ElemType)); //追加分配存储空间
        if(!newbase) exit(OVERFLOW);
        L.elem = newbase; //新基址
        L.listsize += LISTINCREMENT;// 更新表的存储空间长度
 }
 q = &(L.elem[i-1]); //q为插入位置指针,数组中下标从0开始
 for(p = &(L.elem[L.length - 1]); p >=q; --p) //下标形式实现for(j = L.length-1, j >= i , j--)
  *(p+1) = *p //移动数据元素 L[j + 1] = L[j]
 *q = e; //插入元素 
 ++ L.length;
 return OK

  • 写回答

3条回答 默认 最新

  • ????27282 网络安全领域优质创作者 2021-10-17 10:51
    关注

    这是链表

    #define overflow -1
    #define ok 1
    #define error 0
    #include <stdio.h>
    #include <stdlib.h>
    #include <malloc.h>
    
    typedef int status;
    typedef int elemtype;
    
    typedef struct lnode
    {
        elemtype data;
        struct lnode *next;
    } lnode, *linklist;
    
    status creatlink(linklist &L, int n, elemtype *e) //从表头插入
    {
        int i;
        linklist p;
        L = (linklist)malloc(sizeof(lnode));
        if (!L)
            return error;
        L->next = NULL;
        for (i = n - 1; i >= 0; --i)
        {
            if (!(p = (linklist)malloc(sizeof(lnode))))
                return error;
            p->data = e[i];
            p->next = L->next;
            L->next = p;
        }
        return ok;
    }
    
    void printlink(linklist L)
    {
        linklist p = L->next;
        while (p)
        {
            printf("%d->", p->data);
            p = p->next;
        }
        printf("end\n");
    }
    
    status insertlink(linklist &L, int i, elemtype e)
    {
        linklist s, p = L;
        int k = 0;
        while (p->next != NULL && k < i - 1)
        {
            p = p->next;
            ++k;
        }
        if (!p->next || k > i - 1)
            return error;
        if (!(s = (linklist)malloc(sizeof(lnode))))
            return overflow;
        s->data = e;
        s->next = p->next;
        p->next = s;
        return ok;
    }
    
    status dellink(linklist L, int i, elemtype &e)
    {
        int k;
        linklist q, p = L;
        while (p->next != NULL && k < i - 1)
        {
            p = p->next;
            k++;
        }
        if (!p->next || k > i - 1)
            return error;
        q = p->next;
        p->next = q->next;
        e = q->data;
        free(q);
        return ok;
    }
    
    void freelink(linklist &L)
    {
        linklist p, q;
        p = L;
        while (p != NULL)
        {
            p = L->next;
            q = p->next;
            free(q);
        }
        L = NULL;
    }
    int main()
    {
        elemtype e[] = {1, 22, 339, 44, 55, 66, 332, 188, 2333};
        int i, n = 9;
        linklist head;
        elemtype rc;
    
        if (!creatlink(head, n, e)) //创建链表
            return error;
        printlink(head);
    
        // printf("index value-->");
        // scanf("%d%d", &i, &rc);
        i = 2, rc = 9999;
        if (!insertlink(head, i, rc)) //插入
            return error;
        printlink(head);
    
        // printf("index value-->");
        // scanf("%d%d", &i, &rc);
        i = 2, rc = 9999;
        if (!dellink(head, i, rc)) //删除
            return error;
        printlink(head);
    
        freelink(head); //释放链表
        if (head)
            printf("xiaoxiaoran");
    }
    
    
    

    这是顺序表

    #define overflow -1
    #define ok 1
    #define error 0
    #define maxsize 16
    #define increment 10
    #include <stdio.h>
    #include <stdlib.h>
    #include <malloc.h>
    
    typedef int status;
    typedef int elemtype;
    typedef struct
    {
        elemtype *elem;
        int length;
        int listsize;
    } sqlist;
    
    status initlist(sqlist &L)
    {
        L.elem = (elemtype *)malloc(maxsize * sizeof(elemtype));
        if (!L.elem)
            exit(overflow);
        L.length = 0;
        L.listsize = maxsize;
        return ok;
    }
    
    status insertlist(sqlist &L, int i, elemtype e)
    {
        if (i < 1 || i > L.length)
            return error;
        elemtype *p;
        int j;
        if (L.length >= L.listsize)
        {
            p = (elemtype *)realloc(L.elem, (L.listsize + increment) * sizeof(elemtype));
            if (!p)
                exit(overflow);
            L.elem = p;
            L.listsize += increment;
        }
        for (j = L.length - 1; j >= i - 1; --j)
            L.elem[j + 1] = L.elem[j];
        L.elem[j + 1] = e;
        L.length++;
        return ok;
    }
    
    void printlist(sqlist L)
    {
        int i;
        for (i = 0; i < L.length; i++)
            printf("%d ", L.elem[i]);
        printf("\n");
    }
    
    status dellist(sqlist &L, int i, elemtype &e)
    {
        int j;
        if (i < 1 || i > L.length)
            return error;
        e = L.elem[i - 1];
        for (j = i; j < L.length; j++)
            L.elem[j - 1] = L.elem[j];
        --L.length;
        return ok;
    }
    
    int main()
    {
        sqlist LL;
        elemtype x;
        int r, i;
    
        if (!initlist(LL)) //初始化
            return error;
    
        for (i = 0; i < 10; i++)
            LL.elem[i] = i * 8;
        LL.length += 10;
    
        //printf("value index-->");  //插入
        //scanf("%d %d", &x, &r);
        x = 188, r = 3;
        insertlist(LL, r, x);
    
        printlist(LL);
    
        //printf("index-->");  //删除
        //scanf("%d", &r);
        dellist(LL, r, x);
    
        printlist(LL);
    
    
        printf("xiaoxiaoran");
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 10月30日
  • 已采纳回答 10月22日
  • 创建了问题 10月17日

悬赏问题

  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥20 Python安装cvxpy库出问题
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥15 python天天向上类似问题,但没有清零
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 C#调用python代码(python带有库)
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题