对于软件技术基础的相关实验题的参考

1.1

#include<stdio.h>

#include<stdlib.h>

#include"stdafx.h"

#define MAXNUM 20

#define true 1

#define false 0

typedef struct

{

    int data[MAXNUM];

    int length;

扫描二维码关注公众号,回复: 4978419 查看本文章

}list_type;

/*create a list:input data fromkeyboard,end by -1*/

 

void createlist(list_type *lp)

{

    int i, elem;

    lp->length = 0;

    printf("\nplease input datas of the list\n");

    for (i = 0; i< MAXNUM; i++)

    {

        scanf_s(" %d", &elem);

        if (elem == -1) break;

        lp->data[i] = elem;

        lp->length++;

    }

}

 

void showlist(list_type *lp)

{

    int i;

    printf("\nThese %d records are:\n", lp->length);

    if (lp->length <= 0)

    {

        printf("No data!\n");

        return;

    }

    for (i = 0; i<lp->length; i++)

        printf(" %d ", lp->data[i]);

    printf("\nlength of the list is:%d", lp->length);

}

int insertlist(list_type *lp, int new_elem, int i)

{

    int j;

    if (lp->length >= MAXNUM)

    {

        printf("the list is full,can not insert.");

        return(false);

    }

    if (i<1 || i>lp->length + 1)

    {

        printf("\n%d is invalid value", i);

        return(false);

    }

    for (j = lp->length; j >=i - 1; j--)

    {

        lp->data[j] = lp->data[j - 1];

    }

    lp->data[i - 1] = new_elem;     //放入新元素;

    lp->length++;        //表长度增加;

    return(true);

 

}

 

int deletelist(list_type *lp, int i)

{

    int j;

    if (i<1 || i>lp->length)

    {

        printf("elem not exist");

        return(false);

    }

    for (j = i; j < lp->length; j++)

    {

        lp->data[j - 1] = lp->data[j];

    }

    lp->length--; //表长度减少;

    return(true);

}

 

list_type delete_negative(list_type *lp)

{

    int i;

    int j = lp->length;

    while (j>0)

    {

        if (lp->data[j] < 0)

        {

            for (i = j; i <lp->length; i++)

            {

                lp->data[i] = lp->data[i + 1];

            }

            lp->length--;

        }

        j--;

    }

    return *lp;

}

 

void main()

{

    list_type list;

    int i, new_elem;

    createlist(&list);

    showlist(&list);

    printf("\ninsert:Enter data and i :\n");

    scanf_s("%d%d", &new_elem,&i);

    insertlist(&list,new_elem, i);

    printf("\nlist after insert:\n");

    showlist(&list);

    printf("\ndelete:Enter i:\n");

    scanf_s("%d", &i);

    deletelist(&list,i);

    printf("\nlist after delete:\n");

    showlist(&list);

    delete_negative(&list);

    printf("\nlist after delete all negative:\n");

    showlist(&list);

}

1.2

#include<stdio.h>

#include<stdlib.h>

#include"stdafx.h"

#define true 1

#define false 0

#define MAXNUM 50

typedef struct

{

    int data[MAXNUM];

    int length;

}list_type;

list_type create_list(list_type *lp)

{

    int i;

    int elenum;

    int m;

    lp->length = 0;

    printf("请输入n个数\n");

    printf("n:");

    scanf_s("%d", &elenum);

    printf("请依次输入");

    for (i = 0; i<elenum; i++)

    {

        scanf_s("%d", &m);

        lp->data[i] = m;

        lp->length++;

    }

    return *lp;

}

list_type insertlist(list_type *lp, int x)

{

    int m=lp->length;

    int i=lp->length;

    int j;

    while(m>0)

    {

        if (lp->data[m] > x)

        {

            i--;

        }

        m--;

    }

    for(j=lp->length;j>i;j--)

    {

        lp->data[j] = lp->data[j - 1];

    }

    lp->data[j] = x;

    lp->length++;

    return *lp;

}

list_type delete_negative(list_type *lp)

{

    int i;

    int m;

    int a = 0;

    for (i = 0; i < lp->length; i++)

    {

        if (lp->data[i] < 0)

            a++;

    }

    for (m = 0; m<i-a;m++)

    {

        lp->data[m] = lp->data[m + a];

    }

    for (i = 0; i < a;i++)

    {

        lp->length--;

    }

    return *lp;

}

void showlist(list_type *lp)

{

    int i;

    printf("\nThese %d records are:\n", lp->length);

    if (lp->length <= 0)

    {

        printf("No data!\n");

        return;

    }

    for (i = 0; i<lp->length; i++)

        printf(" %d ", lp->data[i]);

    printf("\nlength of the list is:%d", lp->length);

}

 

 

int main()

{

    int x;

    list_type list;

    list=create_list(&list);

    printf("建立的顺序表如下");

    showlist(&list);

    printf("\n输入的x的值:");

    scanf_s("%d", &x);

    insertlist(&list,x);

    printf("新增元素的顺序表如下");

    showlist(&list);

    delete_negative(&list);

    printf("删去负数的顺序表如下");

    showlist(&list);

}

 


 

 

猜你喜欢

转载自blog.csdn.net/lzj_1314/article/details/78857379