zoukankan      html  css  js  c++  java
  • 数据结构、算法、线性表学习总结

    一、思维导图

    二、重要概念笔记

    1、链表头插法

    void CreateListF(LinkList& L, int n) {
    	L = new LNode;
    	LinkList p;
    	ElemType data;
    	L->next = NULL;
    	for (int i = 0; i < n; i++) {
    		cin >> data;
    		p = new LNode;
    		p->data = data;
    		p->next = L->next;
    		L->next = p;
    	}
    }
    

    2、链表尾插法

    void CreateListR(LinkList& L, int n) {
    	LinkList tail, p;
    	ElemType data;
    	L = new LNode;
    	tail = L;
    	while (n) {
    		cin >> data;
    		p = new LNode;
    		p->data = data;
    		p->next = NULL;
    		tail->next = p;
    		tail = p;
    		n--;
    	}
    }
    

    3、单链表逆置

    void ReverseList(LinkList& L) {
    	LinkList p1, p2=NULL;
    	L = L->next;
    	while (L) {
    		p1 = new LNode;
    		p1->data = L->data;
    		p1->next = p2;
    		p2 = p1;
    		L = L->next;
    	}
    	p1 = new LNode;
    	p1->next = p2;
    	L = p1;
    }
    

    4、栈(stack)

    栈之定义格式

    stack<Elemtype> StackName;

    栈之特点

    先进后出式

    栈之操作函数

    出栈Stackname.pop();
    入栈Stackname.push();
    空栈判断Stackname.empty();
    栈中元素个数Stackname.size();
    栈顶元素Stackname.top();

    5、队列(queue)

    队列之定义格式

    queue<Elemtype> QueueName;

    队列之特点

    先进先出式

    队列之操作函数

    出队QueueName.pop();
    入队QueueName.push();
    队头元素QueueName.front();
    队尾元素QueueName.back();
    空队列判断QueueName.empty();
    队列中元素个数QueueName.size();

    6、串(string)

    串之定义格式

    string StrName;

    串之操作函数

    读取一行getline(cin,StrName);
    截取字符串StrName.substr(num1,num2);(num1表示截取位置,num2表示截取个数)
    字符串长度StrName.size();
    字符串连接

    str1="hello ";
    str2="world";
    str3=str1+str2;//str3最终为hello world
    

    三、疑难问题解决

    关于字符串中KMP算法的next数组。

    在求一个串对应字符的next数组值时,根据算法的特点,有多种next数组求法,例如从-1开始和从0开始,而恰巧课堂中和书本上正好不同,起初处于懵懂状态,无法在两种模式中切换自如,但是在一番观察后发现,花样再如何变都是异曲同工,给从-1开始的next数组每个元素加一,恰好是从0开始的next数组,再经过多次练习后,掌握该知识点。

    //从-1开始的next数组计算代码
    void GetNext(string t, int next[])
    {
    	int j = 0, k = -1;
    	next[0] = -1;
    	while (j < t.size() - 1)
    	{
    		if (k == -1 || t[j] == t[k])
    		{
    			j++;
    			k++;
    			next[j] = k;
    		}
    		else
    			k = next[k];
    	}
    }
    
  • 相关阅读:
    jqGrid基本使用
    模块熟悉
    正则表达式-精髓
    登录+购物车+信息保存
    输入打开文件
    python打印目录下的文件名
    进度条
    模块导入
    正则表达式
    函数笔记
  • 原文地址:https://www.cnblogs.com/zx224569/p/12589057.html
Copyright © 2011-2022 走看看