技术标签: 《 数据结构与算法 》 算法 c语言 数据结构 开发语言
目录
【问题描述】
实现可变长顺序表的建表过程。任务要求:通过顺序表的初始化、插入算法,实现顺序表的建表,并依次输出顺序表元素。
【输入形式】
第一行输入整数N(1<=N<=100),表示创建长度为N的顺序表;
第二行输入N个整数,表示顺序表的N个元素,依次放入表中;
【输出形式】
依次输出顺序表的全部元素。(以空格分隔)
【样例输入】
5
1 2 3 4 5
【样例输出】
1 2 3 4 5
【样例说明】
#include<stdio.h>
#include<malloc.h>
typedef struct Node{
int data;
struct Node *next;
}Node,*PNode;
PNode Init(){
PNode H=(PNode)malloc(sizeof(Node));
H->next=NULL;
return H;
}
int Create(PNode H,int n){
int i,e;
PNode p=H;
for(i=0;i<n;i++){
scanf("%d",&e);
PNode q=(PNode)malloc(sizeof(Node));
q->next=NULL;
q->data=e;
p->next=q;
p=q;
}
return 1;
}
int Print(PNode H){
PNode p=H->next;
while(p){
printf("%d ",p->data);
p=p->next;
}
printf("\n");
return 1;
}
int Insert(PNode H,int m){
int pos,e,i,j;
PNode p;
for(i=0;i<m;i++){
p=H;
j=0;
scanf("%d %d",&pos,&e);
while(j<pos-1&&p){
p=p->next;
j++;
}
if(j>pos-1||!p){
printf("error\n");
}else{
printf("yes\n");
PNode q=(PNode)malloc(sizeof(Node));
q->data=e;
q->next=NULL;
q->next=p->next;
p->next=q;
}
}
return 1;
}
int main(){
PNode H;
int n,m;
H=Init();
scanf("%d %d",&n,&m);
Create(H,n);
Insert(H,m);
Print(H);
return 0;
}
这是一道链表基础题,给定一个链表,要求在指定位置插入元素并输出。
首先,需要定义链表结点的结构体类型。因为题目中数据元素是整数,所以结点的数据域可以定义为 int 类型。
其中,`*PNode` 表示指向 `Node` 结构体类型的指针。为了方便,我们可以直接定义 `Node` 的指针类型 `PNode`。
其次,需要实现初始化链表、创建链表、插入元素和输出链表等函数。
函数 `Init()` 用于初始化链表。在该函数中,首先使用 `malloc()` 动态分配一块内存来存储头结点,然后将头结点的指针域 `next` 设为 `NULL`,最后返回头结点的地址。
函数 `Create()` 用于创建链表。在该函数中,首先从标准输入中读取链表的元素个数,然后依次读入每个元素,并将其插入链表中。其中,创建新结点需要使用 `malloc()` 动态分配内存,并将新结点的指针域 `next` 设为 `NULL`,然后再将新结点插入到链表的末尾。
函数 `Insert()` 用于在链表指定位置插入元素。在该函数中,首先从标准输入中读取需要插入元素的个数 `m`,然后循环 `m` 次,每次从标准输入中读入需要插入的位置 `pos` 和元素值 `e`。接着,从头结点开始遍历链表,找到第 `pos-1` 个结点,然后将新结点插入到该结点之后即可。
最后,函数 `main()` 中调用上述函数来实现功能。首先初始化链表并从标准输入中读取链表的元素个数 `n` 和需要插入元素的个数 `m`,然后调用 `Create()` 函数创建链表。接着,调用 `Insert()` 函数插入元素,并最终调用 `Print()` 函数输出链表。
顺序表 | ||
1 | C语言实现顺序表的插入、删除 | https://want595.blog.csdn.net/article/details/126967798 |
2 | 顺序表基本练习-初始化、插入和输出 | https://want595.blog.csdn.net/article/details/127737121 |
3 | 顺序表基本练习-删除元素 | https://want595.blog.csdn.net/article/details/127737165 |
4 | 顺序表基本操作-查找 | https://want595.blog.csdn.net/article/details/127737191 |
5 | 顺序表删除重复元素 | https://want595.blog.csdn.net/article/details/126998125 |
6 | 顺序表实现集合并集 | https://want595.blog.csdn.net/article/details/127737454 |
7 | 顺序表元素循环左移(new) | https://want595.blog.csdn.net/article/details/128281975 |
8 | 删除顺序表中最小值 | https://want595.blog.csdn.net/article/details/126984319 |
9 | 递增顺序表插入 | https://want595.blog.csdn.net/article/details/126990708 |
10 | 将顺序表非零元素依次移到表的前端 | https://want595.blog.csdn.net/article/details/127737349 |
11 | 删除顺序表中第一个值等于x的元素 | https://want595.blog.csdn.net/article/details/127619864 |
12 | 在顺序表中,输入一个元素插入到原表的最小元素之前 | https://want595.blog.csdn.net/article/details/127365247 |
文章浏览阅读6.1k次,点赞3次,收藏5次。外围设备介绍计算机的外围设备(简称外设)虽然很多,但按功能分大类只有四类:输入、输出、存储、网络通讯。有些专业计算机需要的外围设备也不尽相同,并不都需要这四类外围设备。外围设备可以按需要组装,有些专业计算机甚至可以将存储设备和主芯片集成到一片芯片上,从而不再需要外加存储设备。最早的计算机(那时还只能称为计算器,只能做简单运算,如ABC机和ENIAC机)输入只是一些拨码开关,只能输入数字(还得是二进_计算机外围固定
文章浏览阅读1.5k次。java 图片中加文字_java怎么在图片上加文字
文章浏览阅读720次,点赞20次,收藏6次。B 选项,在创建模式时,可以不指定模式名。C 选项,兼容模式可选值为 AB、C、PG.安装GBase 8c分布式集群时所需的配置文件gbase.yml,在解压GBase8cV5 S3.0.0BXX CentOS x86 64.tar.bz2压缩包生成的目录中得到。真值的有效文本值是: TRUE、t、"true'、y、yes'、"1'TRUE'、true、整数范围内1~2^63-1、整数范围内-1~-2^63。GBase 8c 使用create table 创建表时,不指定参数,默认是astore,行存表。_如果需要打开delete语句的审计功能,需要开启下面哪个参数
文章浏览阅读334次。1 xmlns是XML Namespaces的缩写,中文名称是XML(标准通用标记语言的子集)命名空间。 web-app是web.xml的根节点标签名称 version是版本的意思 xmlns是web.xml文件用到的命名空间 xmlns:xsi是指web.xml遵守xml规范 xsi:schemaLocation是指具体用到的schema资源_xml文件里面的名词
文章浏览阅读1.6w次,点赞12次,收藏69次。OpenGL 中点圆、椭圆生成算法_用setpixel函数中点画圆算法代码c++
文章浏览阅读2.1k次。首先在HTML中写入div,命名为img,在这个div中加入一个span标签并命名为img-bg和img50(5星为50).<div class="img"> <span class="img-bg img50"></span> <span class="img-bg img45"></span> <span class="img-bg img40"></span> </div> 在css代码._css背景图高度占据一半另一半有别的背景色
文章浏览阅读3.9k次。Android MPAndroidChart:动态添加统计数据线【8】本文在附录相关文章6的基础上,动态的依次增加若干条统计折线(相当于批量增加数据点)。布局文件:
文章浏览阅读6.3k次。vmware中 centos的磁盘大小 20G->30G现象:fdisk -l可以看到增大后的磁盘总量,但是需要增加分区并格式化然后挂载才能使用.一、vmware中的设置先关闭虚拟机vm->settings->hard disk->utilities->expand->输入大小(增加后的大小)二、启动虚拟机,进入命令行1、 fdisk /dev/sda进入命令行Comman_linux虚拟机磁盘空间不足
文章浏览阅读927次。hive安装前提:1.基于hadoop2.7的完全分布式集群搭建完成hadoop2.7集群搭建2.MySQL8.0安装完成 安装centos7上MySQL8.0Hive2.3.8的安装下载链接:https://mirrors.tuna.tsinghua.edu.cn/apache/下滑找到hive点击进去点击hive2.3.9(hive2.3.9和hive2.3.8差别不大)下载画红线的也就是bin.tar.gz后缀的hive解压安装下载完成后通过xftp传到虚拟机上(基操不在赘述)_hive2.3.8安装
文章浏览阅读430次,点赞8次,收藏4次。在进行安装的时候有一个是否联网的选择,选择链接网络,则在安装的时候,可以看到在安装过程中,它会主动下载grub-efi-amd64-signed' package,确确实实,我在安装详情里看到了它有这个的download过程以及update过程。_the grub-efiamd64-signed' package failed to install intotarget without the g
文章浏览阅读451次。n_learn_data = int ( n_samples * 0.8 ) # 80% 的可用数据点 learn_data , test_data = samples [: n_learn_data ], samples [ - n_learn_data :] learn_labels , test_labels = labels [: n_learn_data ], labels [ - n_learn_data :]_从零开始搭建神经网络
文章浏览阅读1.4k次。我的题解放在github仓库了(喜欢的话,记得star哈)下面是汇总导航,如果你只想看其中某个题的话,点击题解直达。乙级的题目每个题都是一个有趣的故事,引导你去思考解决问题的能力,不是单纯的刷题。然后只涉及数组,循环,判断,字符串等基础编程语言语法的知识,不会设计复杂的算法与数据结构。一开始可能会有点吃力,正常,但是如果你全部刷完,leetcode上部分简单题对你来说是小case了。甲级主要是算法与数据结构,乙级刷完了,也可刷甲级, 甲级的题目特别好,测试用例丰富如果是急需找工作,面试的话刷lee_找工作pat乙级