最近在重新复习c,其实也可以算是学习吧。由于大一时上课没怎么听(现在那个悔啊),不过毕竟咱们是操作windows的,至少目前我接触的linux还是不多。。。我的观点一向是越底层的东西功能越强大,所以学好c是很有必要的。由于c是面向过程的,所以没有类这么一说,当然也就没有什么属性啊,方法啊(一个文件里的函数不考虑)之类的。所以在建立链表的时候就没有java那么的直观方便啦。不过c里提供了结构体struct这么一个东东,它给我的感觉就是一个伪类,我们可以在某种程度上把它所定义的变量看做一个对象,这个东东可是链表建立的关键啊!好吧,废话说多了,直接上代码,也算是我的一点小小成就吧~~~
#include "stdio.h"
#define LEN sizeof(struct stu)
//结构体,存储编号信息及链表下一结点的地址
struct stu
{
int id;
struct stu *next;
};
//全局变量
struct stu *sp,*first,*last;
//建立链表
void build(int n)
{
int i=1;
while(i<=n)
{
if(i==1)
{
//头指针、尾指针、中间变量指针初始化
first=last=sp=(struct stu*)malloc(LEN);
sp->id=i;
}
else
{
//申请内存空间
last=(struct stu*)malloc(LEN);
//设置编号
last->id=i;
//将sp的下一结点指向last并更新sp
sp->next=last;
sp=last;
}
i++;
}
//若去掉,则为单向链表
last->next=first;
}
//筛选
void del(int m)
{
int i;
//其实应该是从last指针开始计数
first=last;
while(first->next!=first)//如果不只剩下一个节点
{
for(i=0;i<m-1;i++)
{
//将first移动到要删除节点的前一位置
first=first->next;
}
printf("\t%d",first->next->id);
//直接横跨到下下个节点
first->next=first->next->next;
}
printf("\t%d",first->id);
}
void main()
{
int n,m;
scanf("%d %d",&n,&m);
build(n);
del(m);
}
其实当初上课的时候指针、结构体、共用体还一些什么杂七杂八的后半部分都没怎么学好,所以最近在恶补这些,不过有些依然还是带着点糊涂,比如malloc()函数啊,还有指针和变量值混来混去啊,以及类似->,*等等符号的运用啊。不过有一点却让我深刻地体会到:c语言确实非常简洁快速,这一点也是java的唯一缺点。。。
分享到:
相关推荐
10. **用户界面**:虽然C语言不擅长图形用户界面(GUI),但可以通过命令行接口实现简单的交互。比如,使用选择菜单让用户输入选项,或者使用提示信息引导用户操作。 总的来说,这个C语言实现的学生成绩管理系统...
- **建立链表**:初始化链表为空,当读入非零的教师编号时,创建新的节点,并将其连接到链表的头部。 - **插入节点**:如果链表为空,新节点成为头节点;否则,找到合适的位置将新节点插入到链表中。 - **删除节点**...
本文将深入探讨基于C语言的宾馆管理系统的设计与实现。 C语言是一种强大的编程语言,具有高效、灵活的特点,常用于系统级软件和应用软件的开发。在宾馆管理系统中,C语言被用来编写底层逻辑和数据处理模块,因为它...
- **排序算法**:学习简单的排序算法,如冒泡排序或插入排序,以实现链表的排序。 - **新链表构建**:理解如何基于已排序的数据构建新的有序链表。 - **链表遍历与输出**:实现链表数据的输出功能。 **题目7:...
例如,用户输入选项后,系统会根据选项执行图书建立、插入、查询、删除、存储、修改、保存、查询、筛选和排序等功能。例如,用户在登录模块中,可以通过输入验证进行登录: ```c int main() { // 主循环 while ...
1. **链表建立**:负责创建链表结构,并根据用户输入添加元素。 2. **排序模块**:对链表进行排序,可采用各种排序算法。 3. **删除模块**:根据需要删除特定元素。 4. **集合交集**:找出两个链表的共同元素,形成...
这个项目强调了学生信息的管理和查询,可能需要使用到链表或数组来存储信息,实现查找算法,如二分查找。此外,系统还需要有增删改查的功能。 3. **销售管理系统**: - 这个项目需要处理销售数据的统计和排序,...
《VC++ VS2010 实现的简单学生管理系统详解》 在信息技术飞速发展的今天,学生管理系统已经成为教育机构管理日常事务的重要工具。本项目基于Microsoft的Visual C++(简称VC++)集成开发环境和Visual Studio 2010...
37. 链表操作:建立链表和累加偶数值,掌握链表结构和遍历。 38. 数列求和:计算特定数列的和,如调和级数,需要理解数学概念和编程实现。 39. 进制转换:将十进制数转化为k进制数,涉及进制转换算法。 40. 子串...
同时,做习题是巩固知识的重要手段,其中包括简单的编程题,如找出整数中的最大值、素数筛选,到复杂的算法实现,如链表排序、字符串处理等。通过这些习题,考生可以不断提升解决实际问题的能力,为考试做好充分准备...
单循环链表及动态存储的实现。 测试用例: m=4;n=3;最后求出成为猴王的猴子号。 结果: 这群猴子的大王是1号猴子。 2.2 数据结构设计 猴子选大王问题可以归结为筛选和排序问题,由于猴子数目以及报数数字的...
数据库索引的底层实现原理通常基于B树或其变种(如B+树),为了优化索引,可以考虑只在查询中经常用到的列上建立索引、索引字段长度不宜过长、避免过多的索引等策略。 HTTP与HTTPS的主要区别在于HTTPS是HTTP的安全...
- 编程实现:使用C语言或C++编写程序,实现上述功能。 - 调试与优化:调试程序,解决可能出现的问题,优化性能。 6. 系统测试: 测试数据应覆盖各种情况,包括正常情况和边界情况,以确保程序的正确性和鲁棒性。...
《航班信息查询与检索》程序设计模版是一个针对航空客运定票系统的开发案例,它结合了数据结构和算法,旨在实现高效的信息查询和检索。在本设计中,航班号被用作关键字,用于快速获取航班的详细信息。系统设计包含了...
- **链表的基本概念:** 链表是一种物理存储单元上的非连续、非顺序的存储结构,数据元素之间的逻辑顺序是通过链表中的指针链接实现的。 - **链表的类型:** 单向链表、双向链表和循环链表等。 **答案解析:** - ...
在计算机二级等级考试中,考生需要掌握各种编程语言的基础知识,如C语言的逻辑运算、Excel的数据筛选逻辑、Python的输入输出操作等。下面详细解释这些知识点: 1. 在C语言程序中,`c>b>a`是一个逻辑表达式,根据...
此外,链表中的插入和删除操作不需要移动其他元素,这使得链表在处理频繁插入和删除的情况下非常高效。然而,链表不支持随机访问,即无法直接通过索引访问元素。 #### 8. short型的取值范围 - **知识点概述**:...