main.c

来自「1、链接存储方法  链接方式存储的线性表简称为链表(Linked List)」· C语言 代码 · 共 116 行

C
116
字号
/*
 * 作者:antigloss
 * 最后修改:05-8-31 19:30
 * 蚂蚁的 C/C++ 标准编程
 *    cpp.ga-la.com
 */

#include <stdio.h>
#include "header/slist.h"
#include "header/funs.h"

int main( void )
{
	LinkList A, B;
	unsigned i = 0, j = 0;

	/* 形成链表 */
	printf( "请为表 A 输入数据:" );
	if ( !( A = FormList() ) ) {
		error( "Not Enough Memory!" );
	}
	printf( "请为表 B 输入数据:" );
	if ( !( B = FormList2() ) ) {
		error( "Not Enough Memory!" );
	}

	/* 显示数据 */
	printf( "表 A:" );
	Disp( A );
	printf( "表 B:" );
	Disp( B );

	/* 插入数据 */
	printf( "请问您要在表 A 的哪个位置插入数据:" );
	/* 输入越界,非法字符或者链表不存在都将导致插入失败 */
	scanf( "%u", &i );
	flush_stdin(); /* 清空输入缓冲区 */
	
	if ( !Insert( A, i ) ) {
		printf( "%s\n", "插入失败!" );
	}
	printf( "请问您要在表 B 的哪个位置插入数据:" );
	scanf( "%u", &i );
	flush_stdin();
	
	if ( !Insert( B, i ) ) {
		printf( "%s\n", "插入失败!" );
	}

	printf("表 A:");
	Disp( A );
	printf("表 B:");
	Disp( B );

	/* 冒泡排序 */
	Bubble( A );
	Bubble( B );

	printf( "表 A 排序后:" );
	Disp( A );
	printf( "表 B 排序后:" );
	Disp( B );

	/* 删除数据 */
	i = j = 0;
	printf( "请问您要从表 A 的哪个位置开始删除数据:" );
	scanf( "%u", &i );
	flush_stdin();
	
	printf( "请问您要删除几个元素:" );
	scanf( "%u", &j );
	flush_stdin();
	
	Delete( A, i, j );
	i = j = 0;
	printf( "请问您要从表 B 的哪个位置开始删除数据:" );
	scanf( "%u", &i );
	flush_stdin();
	
	printf( "请问您要删除几个元素:" );
	scanf( "%u", &j );
	flush_stdin();

	Delete( B, i, j );

	printf( "表A:" );
	Disp( A );
	printf( "表B:" );
	Disp( B );

	Merge( A, B ); /* 合并有序链表 */
	printf( "合并链表后:" );
	Disp( A );

	/* 前 m 个结点和后 n 个结点的互换 */
	i = 0;
	printf( "前 m 个结点和后 n 个结点的互换。请输入一个整数:" );
	scanf( "%u", &i );
	flush_stdin();
	
	Exchange( A, i );
	printf( "前 m 个结点和后 n 个结点的互换后:" );
	Disp( A );

	/* 删除单链表中重复的数据元素 */
	Purge( A );
	printf( "删除重复元素后:" );
	Disp( A );

	/* 释放内存 */
	Destroy( A );

	puts( "请按回车退出..." );
	getchar();
	return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?