核心代码:
int common_prefix(List LA,List LB) //找到最大前缀的下标
int compare(List LA,List LB,int prefix) //然后进行比较

int
common_prefix(List LA,List LB)
{int i;int j = 0;int length;length = ( LA.length - LB.length ) ? LA.length : LB.length;for(i = 0;i<length;i++){if(LA.elem[i] == LB.elem[i])j++;}return j;}
int
compare(List LA,List LB,int prefix)
{if(LA.length == prefix && LB.length == prefix)return 0;if(LA.elem[prefix] < LB.elem[prefix])return 1;if(LA.elem[prefix] > LB.elem[prefix])return 2;elsereturn OK;
}

我看了一下网上别人的答案,觉得更简洁一些,它是一趟扫描下来的,列在下面:

int compare(List LA,List LB)
{int i = 0;while(i<LA.length && i < LB.length){if(LA.elem[i] > LB.elem[i])return 2;else if(LA.elem[i] < LB.elem[i])return 1;elsei++;}if(i < LA.length)return 2;else if(i < LB.length)return 1;else return 0;
}

对返回值的说明

switch(choose){case 0:printf("A = B\n");break;case 1:printf("A < B\n");break;case 2:printf("A > B\n");break;default:printf("no compare!!!\n");}

全部代码

#include<stdio.h>
#include<stdlib.h>#define ERROR -1
#define OK 1#define LIST_INT_SIZE 100
#define LISTINCREMENT 10typedef struct
{int * elem;int length;int size;}List;int
InitList(List *L)
{(*L).elem = (int *)malloc(LIST_INT_SIZE * sizeof(int));if(!(*L).elem)exit(ERROR);(*L).length = 0;(*L).size = LIST_INT_SIZE;return OK;
}int
InsertList(List * L,int i,int e)
{int * newbase,*q,*p;//int list1[5] = {3,5,7,9,11};if(i<1 || i>(*L).length+1)return ERROR;if( (*L).length > (*L).size){newbase = (int *)realloc((*L).elem, (LISTINCREMENT + (*L).size ) * sizeof(int));if(!newbase)exit(ERROR);(*L).elem = newbase;(*L).size = LISTINCREMENT + (*L).size;}q = (*L).elem + i -1;//也就是插入点后面的元素都要往后挪一位for( p = (*L).elem + (*L).length-1 ;p>=q;--p){*(p+1) = *p;}*q = e;++ (*L).length;return OK;}int
define_create(List *L,int n)
{int i,j;int e;InitList(L);printf("please enter %d elements: ",n);scanf("%d",&e);InsertList(L,1,e);//if don't write like this divided,we can't get the result.for(i = 1;i<n;i++) //modify{scanf("%d",&e);// for(j = 0;j<(*L).length;j++)//      if(e <= *((*L).elem + j) )//       break;      //InsertList(L,j+1,e);   //like this add orderInsertList(L,i+1,e);}return OK;
}void
ListTraverse(List L,void(*visit)(int *))
{int * q;q = L.elem;//for(;(q ++)!= NULL;)for(int i = 1;i<=L.length;i++){visit(q++);}printf("\n");}void visit(int * c)
{printf(" %d ", *c );
}int
common_prefix(List LA,List LB)
{int i;int j = 0;int length;length = ( LA.length - LB.length ) ? LA.length : LB.length;for(i = 0;i<length;i++){if(LA.elem[i] == LB.elem[i])j++;}return j;}int
compare(List LA,List LB,int prefix)
{if(LA.length == prefix && LB.length == prefix)return 0;if(LA.elem[prefix] < LB.elem[prefix])return 1;if(LA.elem[prefix] > LB.elem[prefix])return 2;elsereturn OK;
}int main(int argc, char const *argv[])
{int n;int choose;List LA,LB;int prefix;printf("please enter the List A number: ");scanf("%d",&n);define_create(&LA,n);printf("please enter the List B number: ");scanf("%d",&n);define_create(&LB,n);ListTraverse(LA,visit);ListTraverse(LB,visit);prefix = common_prefix(LA,LB);choose = compare(LA,LB,prefix);switch(choose){case 0:printf("A = B\n");break;case 1:printf("A < B\n");break;case 2:printf("A > B\n");break;default:printf("no compare!!!\n");}return 0;
}

《数据结构题集》2.12相关推荐

  1. 严蔚敏版《数据结构 (C语言版)》和《数据结构题集》(一)

    这里用的是严蔚敏版<数据结构 (C语言版)>和<数据结构题集>,深感自己的代码写得又渣又无力,打算把这本书好好琢磨透彻,里面的算法和模板都实现一遍,题目也都做一遍.最终能够做到 ...

  2. 浙大数据结构题集02-线性结构2 一元多项式的乘法与加法运算python版

    浙大数据结构题集02-线性结构2 一元多项式的乘法与加法运算python版 设计函数分别求两个一元多项式的乘积与和. 本文用链表做的 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数 ...

  3. 栈和队列-第3章-《数据结构题集》习题解析-严蔚敏吴伟民版

    习题集解析部分 第3章 栈和队列 --<数据结构题集>-严蔚敏.吴伟民版        源码使用说明  链接☛☛☛ <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解 ...

  4. c语言数据结构算法设计题,数据结构题集(C语言版)算法设计题答案[].doc

    数据结构题集(C语言版)算法设计题答案[].doc 第一章 绪论 1.16 void print_descending(int x,int y,int z)// 按从大到小顺序输出三个数 { scan ...

  5. c语言采用顺序存储结构存储串,试编写算法实现串的置换操作,串-第4章-《数据结构题集》答案解析-严蔚敏吴伟民版...

    习题集解析部分 第4章 串 --<数据结构题集>-严蔚敏.吴伟民版 源码使用说明  链接☛☛☛<数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明 课本源码合 ...

  6. 严蔚敏版《数据结构 (C语言版)》和《数据结构题集》(五)——栈和队列...

    栈的顺序表实现 1 #include <iostream> 2 #include <stdlib.h> 3 #include <stdio.h> 4 #define ...

  7. 数据结构题集(严书)查找 常见习题代码

    第九章 查找 9.25 int Search_Sq(SSTable ST,int key)//在有序表上顺序查找的算法,监视哨设在高下标端 {ST.elem[ST.length+1].key=key; ...

  8. 数据结构题集(c语言版)第2章:线性表

    2.10 从顺序表中a中删除第i个元素起的k个元素 #include <stdio.h> #include <stdlib.h> #define TRUE 1 #define ...

  9. 数据结构题集c语言版第七章答案,数据结构题集(C语言版)答案 - 严蔚敏编著...

    C Temp); ListMinus_L(A Temp D); } 2.30 要求同2.29题 试对单链表编写算法 请释放A表中的无用结点空间 解: // 在A中删除既在B中出现又在C中出现的元素 并 ...

  10. 数据结构题集(c语言版)第1章:绪论

    1.17 k阶斐波那契数列 已知k 阶斐波那契序列的定义为 : 试编写求k阶斐波那契序列的第m项值的函数算法,k和m均以值调用的形式在函数参数表中出现. 递归算法(较完善,输入引导,反复计算)如下: ...

最新文章

  1. 关于高速光耦6n137的使用总结_光耦使用中的那点事1
  2. 结构风险和经验风险是什么?怎么去平衡它们?
  3. 算法回顾(三) 二分查找
  4. org.hibernate.AnnotationException: No identifier specified for entity
  5. 计算机网络第六章ppt课件,计算机网络与通信(第6章).ppt
  6. Python基础学习总结__Day3
  7. linux sftp密码错误,linux个别用户sftp坏掉,验证密码后卡住, 大概是什么问题?...
  8. aes js 加盐值 解密_cryptoJS AES 加解密简单使用
  9. FFplay源码分析-rtmp入口
  10. 怎么在国内创建谷歌账号_如何在Google相册中创建和共享协作相册
  11. 产品 电信nb接口调用_【IoT】物联网NB-IoT之电信物联网开放平台对接流程浅析
  12. [ActionSprit 3.0] FMS安装与测试
  13. 计算机组装图解,电脑组装图解
  14. mysql 重建索引,mysql优化之索引重建
  15. 物理学专业英语(词汇整理)--------03
  16. twisted的简单介绍
  17. 我的世界服务器修改地图名字,我的世界改存档名字怎么改
  18. 如何将ES6转换成ES5?
  19. C# Cefsharp 的使用(Google浏览器)
  20. Debian9的各个版本的下载地址

热门文章

  1. web网站页面实现设计代码
  2. android省市区三级联动,NumberPicker实现省市区三级联动的效果
  3. C++--22.特殊类的设计
  4. windows 常用自由、开源、免费软件(不断更新)
  5. 计算机基础知识上机操作excer,excel上机操作题及答案
  6. 23_多易教育之《yiee数据运营系统》OLAP平台-整体概述篇
  7. 基于单片机的银行排队叫号系统的设计
  8. 黑名单电话和短信拦截
  9. 华为荣耀9升降级系统 | 华为荣耀9变砖后如何救砖 | 华为荣耀9获取BL解锁码以及如何解BL锁 | 华为荣耀9如何通过写ramdisk.img来获取root
  10. Cplex入门教程(一)