`
天才白痴
  • 浏览: 8325 次
  • 性别: Icon_minigender_1
  • 来自: 南京
最近访客 更多访客>>
社区版块
存档分类
最新评论

对字符串进行排序的程序(气泡法)

阅读更多
#include<stdio.h>
#include<string.h>
#include<malloc.h>
#define N 20 // the length of English words

struct node {
	char en[N];
	struct node *next;
};

void print(struct node *p);
void sort(struct node *p);
void del(struct node *p);
void swap(struct node *s1, struct node *s2);

void main() {
	struct node *h=NULL, *p, *p1;
  	char a[N];
  	int z = 0;
  	while(z<5) {
  		printf("Input the word:");
  		gets(a);
		p=(struct node *) malloc(sizeof(struct node));
  		strcpy(p->en,a);
  		if(h==0) {
			h = p;
			p1 = p;
		}
  		else {
			p1->next = p;
			p1 = p;
		}
  		z = z + 1;
   }
   p->next = NULL;
//   print(h);
   sort(h);
//   print(h);
   del(h);
   print(h);
}

void sort(struct node *p) {
	// bubble method
	struct node *p1, *p2;
	p1 = p;
	while(p1) {
		p2 = p1->next;
		while(p2) {
			if(strcmp((p2->en),(p1->en))>0) {
				swap(p1,p2);
			}
			p2 = p2->next;
		}
		p1 = p1->next;
	}
}

void swap(struct node *s1, struct node *s2) {
	struct node temp1,temp2;
	temp1 = *s1;
	temp1.next = s2->next;
	temp2 = *s2;
	temp2.next = s1->next;
	*s1 = temp2;
	*s2 = temp1;
}

void del(struct node *p) {
	struct node *p1,*p2;
	p1 = p->next;
	while(p1) {
		p2 = p1->next;
		while(p2) {
			if(strcmp((p2->en),(p1->en))==0) {
				p1->next = p1->next->next;
				free(p2);
			}
			else {
				break;
			}
			p2 = p1->next;
		}
		p1 = p1->next;
	}
}

void print(struct node *p) {
  while(p) {
	  puts(p->en);
	  p = p->next;
  }
}
分享到:
评论

相关推荐

    用冒泡、插入、快速排序等对这些字符串按照字典顺序进行排序实验

    在字符串排序中,可以选取一个基准字符串,将所有小于基准的字符串放在其前面,大于基准的放在其后面,然后递归地对这两部分进行快速排序。 对于题目给出的二维字符数组`char s[][20]`,我们可以先初始化这个数组,...

    对字符串的排序.doc

    标题中的“对字符串的排序”指的是在编程中对一串由字符组成的字符串进行排序的操作。在Java编程语言中,这通常涉及到将字符串拆分成字符数组,然后应用某种排序算法来调整字符的顺序,最终重新组合成排序后的字符串...

    选择结构与起泡法排序-汇编

    2. **字符排序**:对于符合要求的字符串,程序将对其进行冒泡排序,按照字符的ASCII码值从小到大排列。 3. **实验报告**:实验完成后,需要提交包括流程图、带注释的代码、运行结果以及实验心得在内的电子版报告。 ...

    任意从键盘输入10个数,用冒泡法进行排序

    在标题"任意从键盘输入10个数,用冒泡法进行排序"中,主要涉及以下几个知识点: 1. **键盘输入**:C#中,我们可以使用`Console.ReadLine()`或`Console.ReadKey()`方法来获取用户的键盘输入。通常,我们需要将用户...

    冒泡排序程序,有下拉菜单

    在C++中,可以使用字符的ASCII值来进行转换,或者如果数据格式明确,可以直接解析字符串。 例如,如果char数据是'1', '2', '3'这样的形式,可以使用以下代码片段读取并转换: ```cpp ifstream inputFile("data.txt...

    cPP.zip_二维数据排序_冒泡法 平均_双精度

    2. **二维数据排序**:在二维数组中,我们可以理解为每个元素是一个一维数组,排序时可能需要对每一行或者每一列进行单独的排序。例如,对行进行冒泡排序,可以先按照第一列排序,然后按照第二列排序,以此类推,...

    对若干数据进行冒泡形式的排序

    例如,"maopao.c"可能是用C语言编写的冒泡排序程序,而"paixu.py"则可能是使用Python实现的冒泡排序。通过分析这些代码,我们可以学习到如何将冒泡排序算法转化为具体的编程语句,以及不同编程语言在实现排序算法时...

    微机原理实验报告冒泡法对数据排序.pdf

    在实验中,使用了INT 21H中断服务程序来输出字符串,这是DOS系统提供的一种输出文本的常用方式。通过指定AH寄存器的值,可以调用不同的功能,如AH=09H用于输出字符串。 【实验流程】 1. 定义数据段,包含原始数据和...

    冒泡排序MFC实现

    可以利用CEdit的GetWindowText函数获取输入的字符串,然后通过字符串处理函数(如strtok)将字符串分割成数字数组。 2. **冒泡排序算法**:实现冒泡排序的关键在于理解其核心逻辑。冒泡排序通过两两比较相邻元素,...

    S7-200SMART冒泡排序-优化版(可选择升序降序及数据类型等).zip

    在实际应用中,用户可以通过修改PLC的输入参数,如“SortOrder”和数据类型的字符串描述,来控制排序的方式和处理的数据类型。这样的设计使得程序具有更高的灵活性和适应性,能够满足不同场景的需求。 总结来说,S7...

    ARM嵌入式系统课程设计_排序过程演示

    函数如`Lcd_DspHz16`用于在LCD上显示汉字字符串,`Lcd_DspAscII8x16`用于显示ASCII字符串,`Lcd_Clr`用于清屏,`Lcd_Disp`显示正在排序或已排序的数字数组,`Lcd_Disp_old`显示原始输入的数字数组,`over`函数则在...

    易语言任意自定义数据类型排序

    在易语言中,你可以定义包含不同类型成员的结构体,如整型、浮点型、字符串等。这种数据类型可以表示复杂的现实世界对象,比如一个人的个人信息,包含姓名、年龄、性别等多个属性。在处理这些自定义数据类型时,排序...

    高级语言程序设计实习报告.pdf

    对学生成绩进行排序,用气泡排序法,从高到低排列。 对成绩前 70% 的学生定义为合格 PASS;而后 30% 的学生定义为不合格 FALL。 最后,将成绩从高到低打印出来。 程序清单: #include #define SIZE 10 ...

    排序算法专题练习1.docx

    对于给定的例子,当对"17,18,19,24,23,20"进行排序时,第一遍排序后,较大的数被推到了后面,不需要在后续遍历中再对已排序的元素进行比较。因此,优化后的冒泡排序会在遍历过程中检查是否还有需要交换的情况,...

    微机原理及接口技术实验——冒泡法.doc

    7. **输出控制**:所有的数据输出前需用字符串输出指令进行提示,确保屏幕上的数据显示清晰。这涉及到字符输出指令,如在汇编语言中,可以使用MOV AH, 09H和INT 21H来实现屏幕输出。 实验的程序清单和流程图详细...

    C语言学生信息管理系统

    在C语言中,可以使用字符串比较函数(如strcmp)来比较学号和姓名,从而实现这些字段的排序。学号排序通常基于数字比较,而姓名排序则需要考虑字母的顺序,这在实现时可能需要额外的处理,例如忽略大小写或按拼音...

    结合生活经验_注重算法的实际应用_冒泡排序_教学设计点评_谢作如1

    在算法应用部分,教师设计的实际问题——模拟奥运会入场顺序,将数字排序转化为国家或地区名称的排序,巧妙地融入了VB字符串比较的知识,既保持了实际应用场景,又与编程教学紧密相连。这种方式使得练习变得有趣且有...

    sorting-algorithms:该代码包括气泡排序,插入排序和选择排序(按升序和降序)。 以及合并排序和快速排序算法

    标签中的"es6"表示这些代码可能使用了ECMAScript 6(ES6)的语法特性,如箭头函数、模板字符串等。通过学习和实践这些代码,不仅可以提升对排序算法的理解,还能加深对JavaScript新特性的掌握。 总的来说,这个...

Global site tag (gtag.js) - Google Analytics