创建一个顺序表,并从键盘接收数字输入,将输入的正整数按从小到大的顺序插入顺序表,并在输入负整数的时候将其绝对值数据删除。每次输入后,将顺序表的内容打印到屏幕上。

 

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

typedef int dataTyep;

typedef struct sequeList
{
    int cap;
    int last;
    dataTyep *data;
}sequeList;

// 初始化顺序表管理结构体
sequeList *initList(int cap)
{
    sequeList *head = malloc(sizeof(struct sequeList));
    if(head == NULL)
        return NULL;

    head->cap = cap;
    head->last = -1;
    head->data = calloc(cap,sizeof(dataTyep)); 
    if(head->data == NULL)
        return NULL;

    return head;
}

bool isFull(sequeList *head)
{
    if(head->last+1 == head->cap)
        return true;
    return false;
}

// 找位置
int getPos(sequeList *head, dataTyep data)
{
    int pos = 0;
    while(pos <= head->last && data > head->data[pos])
        pos++;
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 答:(1)根据输入次序建立单链表,输出链表的值:按照输入数字建立单链表,输出链表的值;(2)对链表按值从小到大排序,输出链表的值:对链表进行排序,按照从小到大顺序输出;(3)删除值相同的结点,输出链表的值:删除链表中值相同的结点,输出剩余结点的值;(4)将链表倒序,输出:将链表中结点的顺序反转,输出倒序后的链表结点值。 ### 回答2: 输入n,再输入n个(0-100)之间的正整数: (1)按输入次序建立单链表,并输出链表的值; 输入n和n个正整数。首先创建一个头节点head,并让一个指针p指向head。然后,根据输入正整数创建节点,并将节点链接到链表中。循环n次完成链表的创建。最后,遍历链表输出节点的值。 (2)对链表按值从小到大排序,并输出链表的值 创建一个新的指针new_head指向head,然后遍历链表中的节点,按节点的值的大小依次排序。如果节点i的值大于节点i+1的值,则交换节点i和节点i+1的位置,直到链表中的所有节点都排好序。最后,遍历链表输出节点的值。 (3)删除值相同的结点,输出链表的值 遍历链表中的节点,如果节点i的值与节点i+1的值相同,则删除节点i+1,并将节点i的next指针指向节点i+2。直到遍历完整个链表,所有相同值的节点都被删除。最后,遍历链表输出节点的值。 (4)将链表倒序,并输出 创建一个指向链表头节点的指针p,并将链表的连接关系依次反转。首先,将指针p指向当前节点,然后将当前节点的next指向上一个节点,再将上一个节点指针指向当前节点,最后将当前节点指针指向下一个节点。重复这个过程直到遍历完整个链表,完成链表的倒序。最后,遍历链表输出节点的值。 ### 回答3: (1)按输入次序建立单链表,并输出链表的值: 首先创建一个空链表,然后按照输入的次序将n个(0-100)之间的正整数逐个插入链表的尾部。最后遍历整个链表,输出链表的值。 (2)对链表按值从小到大排序,并输出链表的值: 可以采用插入排序算法对链表进行排序。从链表的第二个元素开始,依次将后面的元素插入到已排序的部分中的正确位置。最后遍历整个链表,输出排序后的链表的值。 (3)删除值相同的节点,输出链表的值: 遍历链表,利用一个集合(如哈希表)来记录已经出现的节点值。当遍历到一个节点时,如果该节点的值已经在集合中存在,则删除该节点,否则将该节点的值添加到集合中。最后遍历整个链表,输出删除重复值后的链表的值。 (4)将链表倒序,并输出: 可以采用三个指针的方法来实现链表的倒序。首先将当前节点的后继节点保存到一个临时变量中,然后将当前节点的后继指针指向前一个节点,再将当前节点设为前一个节点,最后将临时变量设为当前节点。重复以上步骤直到链表的最后一个节点。最后遍历整个链表,输出倒序后的链表的值。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值