题目:编写算法程序将非递减有序的单链表中值相同的多余结点删除。设线性表为顺序存储结构。

1.需求分析

将非递减有序的单链表中值相同的多余结点删除,设线性表为顺序存储结构。

当用户输入的数组的关键码为非递减有序时,删除重复节点;当用户输入的数组的关键码并不是有序时,进行排序,然后删除重复的节点。

本程序处理int型和char型的数组。

 

2.概要设计

 

    总体流程如下如:

 

 

ADT定义:

struct _Node{

    struct _Node * next;

    DataType data;

};

    主要的函数:

int append(DataType _data);//追加到最后

int delete_current(Node * nd);//删除当前节点

int delete_next(Node * nd);//删除下一个节点

Node * get_next(Node * nd);//返回下一个节点

Node * get_list();//生成list

 

3.详细设计

流程图为:

 

其中直接插入排序算法的流程图如下:

 

4.调试分析

当用户输入的数组的长度超过最大值N时,程序发生错误。

当DataType为char型时,不能处理多于一位数的整数,如下:

 

数组长度:9

数组元素:1 9 89 3 2 67 7890 90

处理结果:

1  2  3  6  7  8  9

 

5.使用说明

    运行程序,输入int型或char型数组,回车即出现结果。

 

6.测试结果

测试组一int型

数组长度:5

数组元素:12 0 989 34 0

处理结果:

0  12  34  98

测试组二char型

数组长度:7

数组元素: 9 4 3 2 0 8 3

处理结果:

0  2  3  4  8  9

测试组三char

数组长度:6

数组元素:1 q 3 e 3 w

处理结果:

1  3  e  q  w

 

7.附录

源程序文件清单。

 

 

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐