c语言编程 数据结构题

创建线性顺序表其最大长度为20并在顺序表中节点的值为{1,4,6,7,10},然后在下标为2的位置插入5打印输出,然后删除值为7的元素并打印输出。拜托了!... 创建线性顺序表其最大长度为20 并在顺序表中节点的值为{1,4,6,7,10},然后在下标为2的位置插入5打印输出,然后删除值为7的元素并打印输出。
拜托了!
展开
 我来答
拥抱Linux
2019-03-23 · 知道合伙人教育行家
拥抱Linux
知道合伙人教育行家
采纳数:418 获赞数:2159
大学的校级奖学金,机械行业十年工作经验

向TA提问 私信TA
展开全部

参考代码如下:(手打不易,望采纳!)

/*
创建线性顺序表其最大长度为20 ,
在顺序表中节点的值为{1,4,6,7,10},
然后在下标为2的位置插入5打印输出,
然后删除值为7的元素并打印输出。
*/

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

typedef struct node
{
    int a;
    struct node *next;
} NODE;

// 创建顺序链表,长度listSize,并初始化
NODE *createlist(NODE *head, int listSize, int arr[]);
// 插入一个节点
int insertnode(NODE *head, int index, int val);
// 删除一个节点
int delnode(NODE *head, int val);
// 打印链表信息
void printlist(NODE *head);

// 主函数
int main(int argc, char const *argv[])
{
    int arr[5] = {1, 4, 6, 7, 10};
    int arrlen;
    arrlen = (int)sizeof(arr) / (int)sizeof(int);

    NODE *head = NULL;
    head = createlist(head, arrlen, arr);
    if (NULL == head)
    {
        printf("Failed to create list . Program Eixt . \n");
        return 0;
    }

    printf("\n");
    printlist(head);

    if (1 == insertnode(head, 2, 5))
    {
        printf("\nInserted a node before index 2,\n");
        printlist(head);
    }
    else
    {
        printf("\nFailed to Insert a node .\n");
    }

    if (1 == delnode(head, 7))
    {
        printf("\nDeleted a node with value of 7,\n");
        printlist(head);
    }
    else
    {
        printf("\nNo node deleted : value is not exist.\n");
    }
    return 0;
}

// 创建顺序链表,长度listSize,并初始化
NODE *createlist(NODE *head, int listSize, int arr[])
{
    head = (NODE *)malloc(sizeof(NODE));
    if (NULL == head)
    {
        printf("Oops ! Malloc Failed ! Program Exit !\n");
        return NULL;
    }
    NODE *p, *q;
    p = head;
    for (int i = 0; i < listSize; i++)
    {
        q = (NODE *)malloc(sizeof(NODE));
        if (NULL == q)
        {
            printf("Oops ! Malloc Failed ! Program Exit !\n");
            return NULL;
        }
        q->next = NULL;

        if (i < 5)
        {
            q->a = arr[i];
        }

        p->next = q;
        p = q;
        q = q->next;
    }
    return head;
}

// 插入一个节点
int insertnode(NODE *head, int index, int val)
{
    NODE *p = head;
    NODE *q = NULL;
    int i, count = 0;
    while (NULL != p->next)
    {
        count++;
        p = p->next;
    }
    if (index > count || index < 0)
    {
        printf("Length of list is %d , please enter proper index to add node. [0,%d]\n", count, count);
        printf("Nothing has been added.\n");
        return 0;
    }

    p = head->next;
    q = head;

    for (i = 0; i <= index; i++)
    {
        if (index == i )
        {
            NODE *n = (NODE *)malloc(sizeof(NODE));
            if (NULL == n)
            {
                printf("Oops ! Malloc Failed ! Program Exit !\n");
                return 0;
            }
            n->a = val;

            n->next = p;
            q->next = n;

            return 1;
        }
        p = p->next;
        q = q->next;
    }
    return 0;
}

// 删除一个节点
int delnode(NODE *head, int val)
{
    NODE *p, *q;
    p = head->next;
    q = head;
    while (p != NULL)
    {
        if (val == p->a)
        {
            p = p->next;
            q->next = p;
            return 1;
        }
        else
        {
            p = p->next;
            q = q->next;
        }
    }
    return 0;
}

// 打印链表信息
void printlist(NODE *head)
{
    NODE *p;
    p = head->next;
    int i = 0;
    if (NULL != p)
    {
        printf("Print List info as below:\n");
        while (NULL != p)
        {
            printf("Node at Index %d , value is %d .\n", i, p->a);
            i++;
            p = p->next;
        }
    }
    else
    {
        printf("List is empty.\n");
    }
}

Linux环境运行截图:

以上,如有帮助,烦请点采纳,谢谢!

光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
下次重出江湖
2019-03-23 · TA获得超过404个赞
知道小有建树答主
回答量:482
采纳率:76%
帮助的人:230万
展开全部
搜索创建列表的函数方法,再创建插入结点,和删除结点的方法。再在主函数调用
望采纳,谢谢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式