sinat_25885723 2015-09-20 03:31 采纳率: 60%
浏览 2223
已结题

关于c语言实现动态顺序表的插入删除

#include "stdafx.h"
#include
const int MAXSIZE = 10;
typedef struct
{
int *elem;
int length;
int maxsize;
}sqlist;
void initList(sqlist *L)
{
L->elem = (int *)malloc(L->maxsize*sizeof(int));
if (!L->elem) exit(0);
L->length = 0;
L->maxsize = MAXSIZE;
}
//插入第i个位置
void insertElem(sqlist *L,int i,int elem)
{
int *p, *q;
if (i(L->length+1))
exit(0);
if (L->length == L->maxsize)
{
L->elem = (int *)realloc(L->elem, (L->maxsize+5) * sizeof(int));
//if (!L->elem) exit(0);
L->maxsize = L->maxsize + 5;
}
for (p = &L->elem[L->length-1]; p > &L->elem[i-1]; p--)
*(p + 1) = *p;
L->elem[i - 1] = elem;
L->length++;
}
//删除第i个位置的元素
void delElem(sqlist *L,int i)
{
if (iL->length)
exit(0);
for (int *p = &L->elem[i]; p < &L->elem[L->length - 1]; p++)
*(p - 1) = *p;
L->length--;
}
int main()
{
sqlist l;
initList(&l);
for (int i = 0; i < 10; i++)
insertElem(&l, i + 1, i + 1);
cout << "dayin:" << endl;
for (int i = 0; i < 10; i++)
cout << l.elem[i];
delElem(&l,5);
cout << "打印删除后的数据:" << endl;
for (int i = 0; i < l.length; i++)
cout << l.elem[i];
system("pause");
return 0;
}
图片说明

  • 写回答

3条回答 默认 最新

  • SGoer 2015-09-20 03:57
    关注

    #include
    #include
    #include

    using namespace std;

    const int MAXSIZE = 10;

    typedef struct
    {
    int *elem;
    int length;
    int maxsize;
    }sqlist;

    void initList(sqlist *L)
    {
    L->length = 0;
    L->maxsize = MAXSIZE;
    L->elem = (int *)malloc(L->maxsize*sizeof(int));
    if (!L->elem) exit(0);
    }
    //插入第i个位置
    void insertElem(sqlist *L, int i, int elem)
    {
    int *p, *q;
    if (i > (L->length + 1))
    exit(0);
    if (L->length == L->maxsize)
    {
    L->elem = (int *)realloc(L->elem, (L->maxsize + 5) * sizeof(int));
    //if (!L->elem) exit(0);
    L->maxsize = L->maxsize + 5;
    }
    for (p = &L->elem[L->length - 1]; p > &L->elem[i - 1]; p--)
    *(p + 1) = *p;
    L->elem[i - 1] = elem;
    L->length++;
    }
    //删除第i个位置的元素
    void delElem(sqlist *L, int i)
    {
    if (i > L->length)
    exit(0);
    for (int *p = &L->elem[i]; p < &L->elem[L->length]; p++)
    *(p - 1) = *p;
    L->length--;
    }
    int main()
    {
    sqlist l;
    initList(&l);
    for (int i = 0; i < 10; i++)
    insertElem(&l, i + 1, i + 1);
    cout << "dayin:" << endl;
    for (int i = 0; i < 10; i++)
    cout << l.elem[i] << " ";
    delElem(&l, 5);
    cout << "打印删除后的数据:" << endl;
    for (int i = 0; i < l.length; i++)
    cout << l.elem[i] << " ";
    system("pause");
    return 0;
    }

    评论

报告相同问题?

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效