摘要: /*多项式加法运算使用链表实现*/#include using namespace std;//使用不带头结点的单向链表,按照指数递减的顺序排列typedef struct PolyNode{ int coef; //系数 int expon; //指数 PolyNod... 阅读全文
posted @ 2015-02-05 18:13 糙哥 阅读(3898) 评论(0) 推荐(0) 编辑
摘要: #include using namespace std;#define MAXSIZE 100/*链表的数组实现*/typedef struct{ int listData[MAXSIZE]; int last;}List, *pList;pList CreateEmptyList()... 阅读全文
posted @ 2015-02-05 15:27 糙哥 阅读(668) 评论(0) 推荐(0) 编辑
摘要: #include using namespace std;/***********************************//*栈的链式存储结构实际上是一个单链表,叫链栈插入和删除操作只能在链栈的栈顶进行*//***********************************/#defi... 阅读全文
posted @ 2015-02-05 15:26 糙哥 阅读(180) 评论(0) 推荐(0) 编辑
摘要: #include using namespace std;/***********************************//*栈的链式存储结构实际上是一个单链表,叫链栈插入和删除操作只能在链栈的栈顶进行*//***********************************/#defi... 阅读全文
posted @ 2015-02-05 15:26 糙哥 阅读(4746) 评论(0) 推荐(0) 编辑
摘要: 给出一个数组a[]与数组长度N,求该数组中最大子列和。(子列由数组中连续的元素组成)int MaxSubseqSum1(int a[], int N) //O(n^3){ int MaxSum = 0; for (int i = 0; i MaxSum ) ... 阅读全文
posted @ 2015-02-04 21:00 糙哥 阅读(370) 评论(0) 推荐(0) 编辑
摘要: 设计函数求一元多项式的导数。输入格式:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。输出格式:以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是0,但是表示为“0 0”。输入样例... 阅读全文
posted @ 2015-02-03 22:11 糙哥 阅读(2004) 评论(1) 推荐(1) 编辑
摘要: Given a constant K and a singly linked list L, you are supposed to reverse the links of every K elements on L. For example, given L being 1→2→3→4→5→6,... 阅读全文
posted @ 2015-02-03 21:48 糙哥 阅读(672) 评论(0) 推荐(0) 编辑
摘要: 来自《编程之美》的关于阶乘的题目: 1.给定一个整数N,那么N的阶乘N!末尾有多少个0呢?例如:N = 10, N! = 3628800,N!的末尾有两个0 2.求N!的二进制表示中最低位1的位置。这两道题的解法类似,先分析第二道题。 要求得N!的二进制表示中最低位1的位置,可将N!循环右移,直到无法被2整除为止,右移的次数即为最低位1之前0的个数,因此最低位1的位置就等于(右移次数 + 1)。 即若N = 0011(3),则 N! = 0110(6),那么N! / 2 = 0011奇数,无法继续被2整除,因此N!可右移一次,最低位1的位置等于 1 + 1 = 2(第二位) 所以该问... 阅读全文
posted @ 2012-10-04 18:13 糙哥 阅读(335) 评论(0) 推荐(0) 编辑
摘要: 题目出至结构之法博客——微软一百题。定义栈的数据结构,添加一个min函数,能够得到栈的最小元素。要求函数min, push以及pop的时间复杂度都是O(1)。由于要使得min函数的时间复杂度为O(1),那么就不能通过遍历O(n)来求最小值。可以通过在push阶段就确定最小值,使用min函数直接返回该值,就能够使得min函数的复杂度为O(1)。#include<stdio.h>#include<stdlib.h>#define STACK_INIT_SIZE 100 //存储空间初始分配量#define STACKINCREMENT 10 //存储空间分配增量typede 阅读全文
posted @ 2012-10-01 22:02 糙哥 阅读(1326) 评论(0) 推荐(0) 编辑
摘要: (程序都是针对有头结点的链表进行排序)1.插入排序 需要用两个指针对链表进行遍历,一个指针用于标记待插入的节点(外循环),另一个指针用于寻找插入位置(内循环)。因为需要进行节点的删除与插入,因此对用于遍历的两个指针,还需要再添加两个前驱指针。Node *InsertSortList( Node *L ){ Node *p1, *p2, *temp, *prep1, *prep2; if( L->next->next == NULL ) return L; for( p1 = L->next->next, prep1 = L->next; p1 != NULL; p 阅读全文
posted @ 2012-09-24 21:46 糙哥 阅读(23669) 评论(3) 推荐(1) 编辑