P505 链表

 

 

数组 vs 链表

数组定义简单,以连续的变量形式储存,不可以减少或添加任何变量,因此在定义时必须已知长度,可能造成数组不够长或内存浪费的情况;
链表以结构体的自引用为原理,可以在内存中以不连续的方式储存,并动态分配内存,即随时加入或删除一个变量。但链表定义比较复杂,且除头结点外每一个结点都没有名字,引用起来比较辛苦。
如果是已知所需变量数,还是数组方便些。

 

 

 

 

 

//单链表入门练习

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include<bits/stdc++.h>
using namespace std;
struct Node{
    int No;string Na;
    Node *nxt;
}*H,*p,*pre;
int main(){
    H=pre=new Node;  cin>>H->No>>H->Na;
    for(int i=2;i<=11;i++){
        p=new Node; cin>>p->No>>p->Na;
        pre->nxt=p; pre=p;
    }
    p->nxt=NULL;
      
    puts("List1:");
    for(p=H;p!=NULL;p=p->nxt)cout<<p->No<<" "<<p->Na<<endl;
    puts("");
      
      
    //puts("【插入 在i前插入k】");
    //puts("请输入:i k");
      
    //puts("【删除 删除k】");
    //puts("请输入:k");
      
    return 0;
}
/*
1000 薛零
1001 刘一
1002 陈二
1003 张三
1004 李四
1005 王五
1006 赵六
1007 孙七
1008 周八
1009 吴九
1010 郑十
*/

  

   

 

 

// 约瑟夫问题链表版

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <iostream>
#include <windows.h>
using namespace std;
struct Person{
    int num;
    Person *next;
};
 
int main(){
    int i,n,m;
    Person *head,*p,*pre;
    head=pre=new Person;
    head->num=1;
     
    cin>>n>>m;
    for(i=2;i<=n;i++){
        p=new Person;
        pre->next=p;
        p->num=i;
        pre=p;
    }
    p->next=head;
     
    pre=new Person;
    pre->next=head;
    while(head){
        p=pre;
        for(i=0;i<m;i++){
            pre=p;
            p=p->next;
        }
        cout<<p->num<<"  ";
        Sleep(600);
        if(p!=p->next) pre->next=p->next;
        else head=NULL; 
        delete p;
    }
    cout<<endl;
     
     
    return 0;
}

  

posted @   codeisking  阅读(446)  评论(0)    收藏  举报
(评论功能已被禁用)
编辑推荐:
· C# 模式匹配全解:原理、用法与易错点
· 记一次SSD性能瓶颈排查之路——寿命与性能之间的取舍
· 理解 .NET 结构体字段的内存布局
· .NET 9中的异常处理性能提升分析:为什么过去慢,未来快
· 字符集、编码的前世今生
阅读排行:
· 记一次SSD性能瓶颈排查之路——寿命与性能之间的取舍
· 2025 年实用、全面的 VS Code 插件推荐!
· 架构师之我见(一)入门篇
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(五):使用.NET为树莓派
· C#实现Stdio通信方式的MCP Server
点击右上角即可分享
微信分享提示