elem

数据结构----线性表操作

假如想象 提交于 2019-12-02 06:21:54
1. 有两张 非递增 有序的线性表 A , B ,采用顺序存储结构,两张表合并用 c 表存,要求 C 为 非递减 有序的,然后删除 C 表中值相同的多余元素。 #include<iostream> using namespace std; #define MAXSIZE 100 #define OVERFLOW -1 #define ERROR 0 #define OK 1 typedef int Status; typedef int ElemType; //顺序存储 typedef struct { ElemType *elem; int length; }sqlist; sqlist la,lb,lc; sqlist InitList() { sqlist L; L.elem=new ElemType[MAXSIZE]; if(!L.elem) exit(OVERFLOW); L.length=0; return L; } sqlist ListInsert(sqlist &L,int i,ElemType e) { if(L.length==MAXSIZE) exit(OVERFLOW); L.elem[i]=e; ++L.length; return L; } sqlist Listsort(sqlist &L) { int i,j; for(i=0;i<L.length

切片删除元素

淺唱寂寞╮ 提交于 2019-12-01 07:47:13
package main import "fmt" func removeElem(s []int, elem int) []int { out := s[:0] for _, val := range s { if val != elem { out = append(out, val) } } return out } func deleteElem(s []int, elem int) []int { size := len(s) for i := 0; i < size; i++ { if s[i] == elem { s = append(s[:i], s[i+1:]...) i-- size-- } } return s[:size] } func main() { s := []int{1, 2, 3, 4, 5, 6, 6, 1} elem := 6 fmt.Println("remove elem before:", s) s1 := removeElem(s, elem) fmt.Println("remove elem after:", s1) s = []int{1, 2, 3, 4, 5, 6, 6, 1} elem = 1 fmt.Println("delete elem before:", s) s2 := deleteElem(s, elem)

acm周末总结

纵然是瞬间 提交于 2019-12-01 03:42:34
stl的知识老师已经讲完了,总体来说,stl用起来还是非常方便的,虽然我现在还是没怎么掌握这些知识,也不能很好的将这些知识运用起来,总体来说只能算是纸上谈兵,网站上的作业还没有怎么做,主要还是作用不熟练,想不起来怎么用,思路非常不清晰,还有一个原因就是都是英文,理解起来有点麻烦。基础的题做起来都是很难的,对那些复杂的题我更是抱着畏惧的心理,我会慢慢克服它的。下面是我最近的一些学习总结: 优先队列 一个拥有权值观念的queue,自动依照元素的权值排列,权值最高排在前面。缺省情况下,priority_queue是利用一个max_heap完成的 优先队列的排序不是线性的排序,而是根据规定的优先级进行排序。内部排序是二叉树排序。 头文件: #include 定义:priority_queue <data_type> priority_queue_name; 如:priority_queue q;//默认是大顶堆 操作: q.push(elem) 将元素elem置入优先队列 q.top() 返回优先队列的下一个元素 q.pop() 移除一个元素 q.size() 返回队列中元素的个数 q.empty() 返回优先队列是否为空 优先队列我掌握的并不好,还不能自由的应用在题目里。 map和multimap: 所有元素都会根据元素的键值自动排序,map的所有元素都是pair

C89实现动态数组

天涯浪子 提交于 2019-11-29 21:24:57
起因 已经很少接触纯C语言项目,不过本着大道至简的念头,空暇时间可以写着玩玩,雕琢技艺, 目标 纯C实现动态数组,提供方便易用泛型接口,避免依赖 实现一 vector.h #ifndef VECTOR_H #define VECTOR_H #include <stddef.h> struct Vector_; typedef struct Vector_ Vector; Vector* vector_new(size_t elem_size); void vector_destory(Vector* v); size_t vector_length(Vector* v); void vector_append(Vector* v, void* elem_in); void vector_get(Vector* v, size_t pos, void* elem_out); void vector_set(Vector* v, size_t pos, void* elem_in); #endif // VECTOR_H vector.c #include <stdlib.h> #include <string.h> #include "vector.h" #define DEFAULT_VECTOR_SIZE 10 typedef unsigned char byte;

树的同构

此生再无相见时 提交于 2019-11-28 19:58:25
题目描述 C语言实现 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdbool.h> #define MaxSize 100 typedef char ElementType; struct TNode { ElementType Elem; int Left; int Right; }T1[MaxSize],T2[MaxSize]; int BuildeTree(struct TNode T[]) { int N; int Root = -1; int i = 0; char cl, cr; int check[MaxSize]; scanf("%d\n",&N); if (N != 0) { for (i = 0;i < N;i++) { check[i] = 0; } for (i = 0;i < N;i++) { scanf("%c %c %c\n",&T[i].Elem,&cl,&cr); if (cl != '-') { T[i].Left = cl - '0'; check[T[i].Left] = 1; } else { T[i].Left = -1; //-1表示没有子节点 } if (cr != '-') { T[i].Right = cr - '0'; check[T[i]

数据结构之顺序表(一)

為{幸葍}努か 提交于 2019-11-27 20:47:49
  顺序表和数组的操作特别相近,我在学习数据结构的时候采用的是郝斌老师推荐的书籍《数据结构算法实现与分析》,这本书是由西安交大高义凡教授 编写的,是一本特别好的教材,该教材实现了严蔚敏版的《数据结构》中的所有伪代码。我在随笔中用的大部分是高义凡老师的代码,因为我经常忘记一些 知识点,所以想把这些优秀的代码,添加进随笔里面,方便我日后进行学习。现在国家在版权方面控制的特别严,希望高老师看见后,理解一下,我也会注 名这些程序的引用。   顺序表头文件: 1 #pragma once 2 #include<stdio.h> 3 #include<stdlib.h> 4 #include<iostream> 5 #include<string> 6 #include<malloc.h> 7 #include<io.h> 8 #include<math.h> 9 10 #define TRUE 1 11 #define FALSE 0 12 #define OK 1 13 #define ERROR 0 14 15 typedef int ElemType; 16 typedef int Boolean; 17 typedef int Status; 18 19 using namespace std; 20 21 #define LIST_INIT_SIZE 10 //

py002 - 单链表python代码实现

删除回忆录丶 提交于 2019-11-27 05:34:20
Code: class Node ( object ) : """结点""" def __init__ ( self , elem ) : self . elem = elem self . next = None class SingleLinklist ( object ) : """单链表""" def __init__ ( self , node = None ) : self . __head = node def is_empty ( self ) : """判断单链表是否为空""" return self . __head == None def length ( self ) : """单链表长度""" cur = self . __head # 设置游标cur count = 0 # 设置计数器 while cur != None : count += 1 cur = cur . next return count def travel ( self ) : """遍历单链表""" cur = self . __head # 设置游标cur while cur != None : print ( cur . elem , end = " " ) cur = cur . next print ( ) def add ( self , elem ) : ""

数据结构之单向循环链表----python实现

强颜欢笑 提交于 2019-11-27 05:27:19
单向循环链表 单链表的一个变形是单向循环链表,链表中最后一个节点的next域不再为None,而是指向链表的头节点。 操作 is_empty() 判断链表是否为空 length() 返回链表的长度 travel() 遍历 add(item) 在头部添加一个节点 append(item) 在尾部添加一个节点 insert(pos, item) 在指定位置pos添加节点 remove(item) 删除一个节点 search(item) 查找节点是否存在 实现 class Node(): """节点""" def __init__(self,elem): self.elem=elem self.next=None class Single_CYCLE_LinkList(): """单向循环链表""" def __init__(self,node=None): self._head=node if node: node.next=node def is_empty(self): #链表是否为空 if self._head==None: return True else: return False def length(self): #链表长度 if self.is_empty(): return 0 cur=self._head count=1 while cur.next!=self.

C++标准库(三)之STL算法

假如想象 提交于 2019-11-26 20:16:31
C++标准库(三)之STL算法 算法头文件: #include<algorithm> #include<numeric> 算法简介:STL算法采用覆盖模式而非安插模式,所以调用者必须保证有足够的操作空间。 函数对象类型声明:元素计数 UnaryProc:Op(elem),无返回值 CompFunc:Op(elem1,elem2),返回True或者False UnaryPredicate:Op(elem),返回True或者False BinaryPredicate:Op(elem,value),返回True或者False 非更易型算法 UnaryProc for_each(InputIterator beg,InputIterator end,UnaryProc Op) difference_type count(InputIterator beg,InputIterator end,const T& val) difference_type count_if(InputIterator beg,InputIterator end,UnaryProc Op) 最小值与最大值 ForwardIterator min_element(ForwardIterator beg,ForwardIterator end) ForwardIterator min_element