数据结构实验之链表八:Farey序列 C++

本文介绍了一个使用链表来实现分数序列的C++程序。该程序定义了一个链表类linklist,通过节点类linknode存储分数,并实现了一个solve方法用于生成特定长度的分数序列。此外,还提供了一个display方法来展示链表中存储的分数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

	#include <iostream>
	using namespace std;
	class linklist {
	private:
	    class linknode {
	    public:
	        int n, m;
	        linknode *next;
	        linknode():next(NULL) {}
	        linknode(int x, int y):n(x),m(y),next(NULL) {}
	    };
	    linknode *head, *tail;
	public:
	    linklist() {
	        head=new linknode(0,1);
	        tail=new linknode(1,1);
	        head->next=tail;
	    }
	    void solve(int a) {
	        for(int i=2;i<=a;i++) {
	            linknode *p=head;
	            while(p!=tail) {
	                if(p->m+p->next->m<=i) {
	                    linknode *temp=new linknode(p->n+p->next->n,p->m+p->next->m);
	                    temp->next=p->next;
	                    p->next=temp;
	                    p=temp->next;
	                }
	                else p=p->next;
	            }
	        }
	    }
	    void display() {
	        linknode *p=head;
	        int num=0;
	        while(p) {
	            cout<<p->n<<"/"<<p->m;
	            num++;
	            if(num%10==0) cout<<endl;
	            else cout<<"\t";
	            p=p->next;
	        }
	        cout<<endl;
	    }
	};
	int main() {
	    int a;
	    cin>>a;
	    linklist l;
	    l.solve(a);
	    l.display();
	    return 0;
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值