double links....baoyuzuoye

这里写图片描述

#include<cstdio>//cww double links
#include<iostream>
using namespace std;
struct node{
    int data;
    node *next;
    node *last;
    node(){int data=0;node *next=NULL;node *last=NULL;}
}*head,*rear;

void append(int x){//push_back
    node* p=new node;
    p->data=x;//fill in the number
    p->last=rear->last;
    p->last->next=p;
    rear->last=p;
    p->next=rear;//该链的链上 
}
//===============orders=====================
void build(){
    head=new node;
    rear=new node;
    head->next=rear;
    rear->last=head;
    //now the links is empty 
    printf("How many numbers at the beginning:");
    int n,x;scanf("%d",&n);
    for (;n--;){
        scanf("%d",&x);
        append(x);//push_back
    }
}
node* Find(node* head,int x){//find.....
    node *p=head->next;
    for (;p!=NULL;p=p->next){
        if (p->data==x)return p;
    }//just find ,nothing else
    return NULL;
}
//===============get order====================
char getorder(){//获取指令 
    while (1){
        printf("Select command and press<Enter>:");
        char ch; cin>>ch;
        if (ch=='f'||ch=='b'||ch=='q'||ch=='Q')return ch;
        //ps:it's not a bad idea to add more fuctions
        //such as insert....I'm lazy
        puts("Please enter a valid command  :");
        puts("[b]build a new double link  = =");
        puts("[f]find x in the link you built");
        puts("[Q]uit =======Bazinga!=========");
    }//交互式的程序好烦 
}
//===============main=fuction===============
bool solve(char ch){
    if (ch=='q'||ch=='Q')return 0;//quit
    if (ch=='b'){build();}//creat a new links
    if (ch=='f'){//find 
        printf("Tell me what you want to find:");
        int x;scanf("%d",&x);
        node *p=new node;
        p=Find(head,x); //find x 
        if (p=NULL)puts("Nowhere to be found");
        else printf("%x\n",&p);//question:print what?
    }
    return 1;
}
//============cww=2016=3=22=22:17=============
int main(){
    while (solve(getorder())){}
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值