一.线性表
一一零个或多个数据元素的有限序列
1) 顺序结构
数组......
2) 链式结构
动态链表
例:洛谷(P1996约瑟夫问题)
#include<bits/stdc++.h>
using namespace std;
struct node{
int data;
node *next;
};
int main(){
int n,m;
scanf("%d%d",&n,&m);
node *head,*p,*now,*prev;
head=new node;
head->data=1;
head->next=NULL;
//分配节点一,值为1
now=head;
for(int i=2;i<=n;i++){
p=new node;
p->data=i;
p->next=NULL;
now->next=p;
now=p;
}
now->next=head;//最后一个指向第一个
//建立链表
now=head,prev=head;
while((n--)>1){
for(int i=1;i<m;i++){
prev=now;
now=now->next;
}
printf("%d ",now->data);
prev-> next=now->next;
delete now;
now=prev->next;
//输出并删除此元素
}
printf("%d",now->data);
delete now;
return 0;
}
二.栈与队列
1) 栈
一一是限定仅在表尾(栈顶)进行插入和删除操作的线性表,即后进先出,简称 LIFO 结构
原理
栈的内部实现原理其实就是数组或链表的操作。而之所以引入栈这个概念,是为了将程序设计问题模型化用高层的模块指导特定行为(栈的先进后出特性),划分了不同关注层次,使得思考范围缩更加聚焦于我们致力解决的问题核心,简化了程序设计的问题。
&spm=1001.2101.3001.5002&articleId=134757947&d=1&t=3&u=7363b167ce06494ea96a8c37f0df69c7)
515

被折叠的 条评论
为什么被折叠?



