1.顺序存储

#include<stdio.h>

/*
设有两个顺序表A和B,且都递增有序,试写一算法,从A中删除与B中相同的那些元素,即求A-B
*/
#define getArrayLen(array,len) len=sizeof(array)/sizeof(array[0]) void main(){
int A[]={,,,,,,,,};
int B[]={,,,,,};
int i=,j=, //循环因子
k=, //记录搜索进度
lena,lenb, //数组长度
mov, //命中次数或者说数组左移距离
index; //记录命中后第一个位置
getArrayLen(A,lena);
getArrayLen(B,lenb);
if(A[]<=B[lenb-] && B[]<=A[lena-]) //出现重复的边界情况
for(i=;i<lenb;i++){ //子弹数组
for(mov=;j<lena;j++){ //靶数组
if(A[j]==B[i]){
mov++; //找着一次就+1,继续找
}else if(mov!=){ //发现后面没有重复的命中目标,结束查找
break;
}
}
if(mov!=){ //不等于0,说明有目标被发现,此时j始终为命中目标的后一个位置
for(index=j;index<lena;index++){ //如果后面还有数据,全部向头部移动
A[index-mov]=A[index];
}
lena-=mov; //A缩小
j-=mov; //j重新定位到未查找的位置
k=j; //k记录进度
}else{
j=k; //没有找着,继续从上一次的进度位置开始下轮查找
} } for(i=;i<lena;i++){
printf("%d ",A[i]);
}
} // 0 22 99 Press any key to continue

2.链式存储

#include<stdio.h>
#include<stdlib.h>
#include<string.h> /*
设有两个链表A和B,且都递增有序,试写一算法,从A中删除与B中相同的那些元素,即求A-B
*/ typedef struct node{
int value;
struct node * next;
} IntNode;
typedef IntNode * Integers;
Integers inputNumArray();//根扰输入创建链表
void destory(Integers);//释放链表内存
void main(void){
Integers A,B;
IntNode *pa,*pb,*p;
printf("请输入数组A(输入exit退出):");
A=inputNumArray();
if(!A->next){
return;
}
printf("请输入数组B(输入exit退出):");
B=inputNumArray(); p=A;
pa=A->next;
pb=B->next;
while(pb){ while(pa){
if(pa->value > pb->value){
break;
}
if(pa->value == pb->value){
p->next=pa->next;
free(pa);
pa=p->next;
}else{
p=pa;
pa=pa->next;
} } pb=pb->next; }
p=A->next;
while(p){
printf("%d ",p->value);
p=p->next;
}
destory(A);
destory(B); }
Integers inputNumArray(){//返回带头结点的数组
IntNode * head,*node,*p;
char str[];
int num;
head=p=(IntNode *) malloc(sizeof(IntNode));
p->next=NULL;
while(){
scanf("%s",&str);
if(strcmp(str,"exit")==){
break;
}
num=atoi(str);//字符串转整型 node=(IntNode *)malloc(sizeof(IntNode));
node->value=num;
node->next=NULL;
p->next=node;
p=node; }
return head;
}
void destory(Integers array){
IntNode * p,*node;
if(!array)return;
p=array;
while(p){
node=p;
p=p->next;
free(node);
}
array=NULL;
}

线性表A-B的更多相关文章

  1. 线性表Linearlist

    顺序存储,链式存储,索引存储,散列存储 基本运算 SLIST         1.置空表 void SetNull(&L)     2.求长度 int Length(L)     3.取元素 ...

  2. 数据结构(Java描述)之线性表

    基础概念 数据结构:是相互之间存在一种或多种关系的数据元素的集合. 逻辑结构和物理结构 关于数据结构,我们可以从逻辑结构和物理结构这两个维度去描述 逻辑结构是数据对象中数据元素之间的关系,是从逻辑意义 ...

  3. JAVASE02-Unit04: 集合框架 、 集合操作 —— 线性表

    Unit04: 集合框架 . 集合操作 -- 线性表 操作集合元素相关方法 package day04; import java.util.ArrayList; import java.util.Co ...

  4. 数据结构代码整理(线性表,栈,队列,串,二叉树,图的建立和遍历stl,最小生成树prim算法)。。持续更新中。。。

    //归并排序递归方法实现 #include <iostream> #include <cstdio> using namespace std; #define maxn 100 ...

  5. Java集合类学习笔记(各种线性表性能分析)

    ArrayList.LinkedList是线性表的两种典型实现:基于数组的线性表和基于链的线性表. Queue代表了队列,Deque代表了双端队列. 一般来说,由于数组以一块连续内存区来保存所有的数组 ...

  6. 动态分配的顺序线性表的十五种操作—C语言实现

    线性表 定义:是最常用的,也是最简单的数据结构,是长度为n个数据元素的有序的序列. 含有大量记录的线性表叫文件 记录:稍微复杂的线性表里,数据元素为若干个数据项组成,这时把一个数据元素叫记录 结构特点 ...

  7. Java Se :线性表

    Java的集合框架分为两个系列,Collection和Map系列.在大学期间,学习数据结构时,好像学习了线性表.非线性表.树,哎,都给忘了.其实,在Collection系列内部又可以分为线性表.集合两 ...

  8. 数据结构算法C语言实现(二)---2.3线性表的链式表示和实现之单链表

    一.简述 [暂无] 二.头文件 #ifndef _2_3_part1_H_ #define _2_3_part1_H_ //2_3_part1.h /** author:zhaoyu email:zh ...

  9. 数据结构算法C语言实现(一)---2.2线性表的顺序表示和实现

    注意: 虽然是用C语言实现,但是考虑到使用了一个C++的特性----引用以简化代码,所以所有的代码均以cpp作为后缀,用g++编译(以后不做说明). g++版本: 一.简述 本节主要讲述线性表的顺序实 ...

  10. C#线性表之顺序表

    线性表是最简单.最基本.最常用的数据结构.线性表是线性结构的抽象(Abstract), 线性结构的特点是结构中的数据元素之间存在一对一的线性关系. 这种一对一的关系指的是数据元素之间的位置关系,即: ...

随机推荐

  1. jquery 事件委托三种事件绑定方式.bind(),.live(),.delegate()

    http://www.ituring.com.cn/article/467# http://www.cnblogs.com/lvdabao/archive/2013/08/30/3290603.htm ...

  2. 【HDU 5532 Almost Sorted Array】水题,模拟

    给出一个序列(长度>=2),问去掉一个元素后是否能成为单调不降序列或单调不增序列. 对任一序列,先假设其可改造为单调不降序列,若成立则输出YES,不成立再假设其可改造为单调不增序列,若成立则输出 ...

  3. 浅谈C语言中的强符号、弱符号、强引用和弱引用

    摘自http://www.jb51.net/article/56924.htm 浅谈C语言中的强符号.弱符号.强引用和弱引用 投稿:hebedich 字体:[增加 减小] 类型:转载 时间:2014- ...

  4. Python学习笔记10-Python MysqlHelper ,MySql 辅助类

    自己写了一个MySql辅助类,有需要的拿走: #--encoding:utf-8-- # import MySQLdb class MySQLHelper: myVersion=0.1 def __i ...

  5. get方式中文乱码问题

    <a target="_blank" href="ftpFileAction!downloadFile.action?filename=测试.xml"&g ...

  6. Python学习入门基础教程(learning Python)--5 Python文件处理

    本节主要讨论Python下的文件操作技术. 首先,要明白为何要学习或者说关系文件操作这件事?其实道理很简单,Python程序运行时,数据是存放在RAM里的,当Python程序运行结束后数据从RAM被清 ...

  7. SpringNote01.基于SpringMVC-Hibernate的Blog系统

    最近,在学习Spring,做这样一个简单的blog系统,主要是让自己动手练习使用Spring,熟练的使用才干进一步的深入学习.该项目使用Maven构建,使用git进行代码管理,通过这样一个小项目,熟悉 ...

  8. iOS 各种传值方式

    属性传值 将A页面所拥有的信息通过属性传递到B页面使用 B页面定义了一个naviTitle属性,在A页面中直接通过属性赋值将A页面中的值传到B页面. A页面DetailViewController.h ...

  9. 【贪心】【TOJ4107】【A simple problem】

    Given three integers n(1≤n≤1018), m(1≤m≤105), k(1≤k≤1018). you should find a list of integer A1,A2,- ...

  10. <!--转换office时需要此配置 --> <identity impersonate="true" />

    1.需要对Office 进行操作时 ,添加权限  <!--转换office时需要此配置 --> <identity impersonate="true" /> ...