数据结构、算法及线性表总结
一、思维导图
二、重点概念和笔记
1.头插法
void CreateListF(LinkList &L,int n) { L=new LNode; int i=0; L->next=NULL; LinkList s; for(i=0;i<n;i++) { s=new LNode; s->next=L->next; L->next=s; cin>>s->data; } }
2.尾插法
void CreateListR(LinkList &L,int n) { L=new LNode; int i=0; L->next=NULL; LinkList s; LinkList r=new LNode; r=L; for(i=0;i<n;i++) { s=new LNode; r->next=s; s->next=NULL; r=s; cin>>s->data; } }
3.链表插入
s=new LNode; s->data=e; s->next=p->next; p->next=s;
4.链表删除
q=p->next; e=q->data; p->next=q->next; delete q;
5.栈
#include<stack> stack<int>s;//定义栈s s.push();//入栈 s.pop();//栈顶元素出栈,出栈操作只是删除栈顶元素,并不返回该元素。 s.top();//访问栈顶 s.empty();//判断栈是否为空 s.size();//访问栈中元素个数
6.队列
#include<queue> stack<int>q;//定义队列q q.push();//将元素接到队列的尾端 q.pop();//将队列中第一个元素弹出 q.empty();//判断队列是否为空 q.size();//访问队列中元素个数 q.front();//访问队首元素 q.back();//访问队尾元素
7.串
#include<string> string str;//定义串str StrCompare( S, T);//对串进行比较 Concat( &T, S1, S2);//连接两个串组成一个新串 SubString( &Sub, S, pos, len);//求子串 StrInsert( &S, pos , T);//串插入 StrDelete( &S, pos , len);//串删除
三、疑难问题及解决方案
1.next值,nextval值的计算
通过网上搜索加深理解: