zoukankan      html  css  js  c++  java
  • 链表:女生节快乐

    这里写图片描述

    好久不写指针、、、代码能力大不如从前

    #include<cstdio> 
    #include<cstring>
    #include<cstdlib>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    const int N=233;
    int cnt;
    struct node{
        int num;
        struct node *next;
        node(){num=0;next=NULL;}
    
        node *build(node **head){
            *head=new node;
            puts("Tell me how many numbers");
            puts("you want to put into the linklist");
            int n;scanf("%d",&n);
            printf("give me %d numbers
    ",n);
            int arr[N];cnt=n;
            for (int i=1;i<=n;i++)scanf("%d",&arr[i]);
            for (int i=n;i>=1;i--){//倒过来,前插法 
                node *p=new node;
                p->num=arr[i];
                p->next=(*head)->next;
                (*head)->next=p;
            }
            return *head;
        }
    
        void insert(node *head){
            int k=cnt+2;
            while (k>cnt+1){
                puts("tell me where do you want to insert");
                scanf("%d",&k);
                if (k>cnt)puts("too big,give me a smaller location");
            }
            puts("tell me which number");
            int x;scanf("%d",&x);
            node *p=(node*)malloc(sizeof(node));
            node *q=(node*)malloc(sizeof(node));
            p=head;
            for (int i=1;i<k;i++) p=p->next;
            q->next=p->next;
            q->num=x;
            p->next=q;
            cnt++;
        }
    
        void deltee(node *head){
            int k=cnt+1;
            while (k>cnt){
                puts("tell me which do you want to delete");
                scanf("%d",&k);
                if (k>cnt)puts("too big,give me a smaller location");
            }
            node *p=(node*)malloc(sizeof(node));
            node *q=(node*)malloc(sizeof(node));
            p=head;
            for (int i=1;i<k;i++) p=p->next;
            q=p->next;//q=即将删除的元素 
            p->next=q->next;
            free(q);
        }
    
        void print(node* head){
            node* t=head->next;
            while (t!=NULL){
                printf("%d ",t->num);
                t=t->next;
            }
            puts("");
        }
    };
    
    int solve(){
        puts("Welcome");
        char st[5];
        struct node *head;
        head=NULL;
        while (scanf("%s",st)&&(st[0]!='q')){
            if (st[0]=='b')head=head->build(&head);//建立 
            if (st[0]=='i')head->insert(head);//插入
            if (st[0]=='d')head->deltee(head);//删除 
            if (st[0]=='s')head->print(head);//显示 
        }
        return 0;
    }
    
    int main(){
        return solve();
    }

    感谢【静静】的指导
    这里写图片描述

  • 相关阅读:
    OA系统权限管理设计方案【转】
    UML类图几种关系的总结
    在pl/sql中使用exp/imp工具实现oracle数据导出/导入
    page 的范围
    JSP页面跳转的五种方法
    Start with...Connect By
    秒杀系统架构
    对系统负载的理解
    sort(7)
    cat(6)
  • 原文地址:https://www.cnblogs.com/cww97/p/7534020.html
Copyright © 2011-2022 走看看