zoukankan      html  css  js  c++  java
  • 一些关于链表操作的代码

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define SIZE 10
    
    struct node
    {
        int num;
        struct node *next;
    };
    struct stud
    {
        char name[10];
        int num;
    }sw[5],sr[5],*pw,*pr;
    
    void selectsort(int *);
    void bubblesort(int *);
    void quicksort(int *,int,int);
    void InsertSort(int *,int );
    int BinSearch(int *,int,int,int);
    struct node * creat(int);
    void reverse(struct node *);
    struct node *merge(struct node *,struct node*);
    struct node * circle(int);
    int select(struct node *,int ,int );
    void WordCount(char str[]);
    
    
    int main()
    {
        int i,j;
        int a[10]={3,2,5,4,1,8,9,7,6,0};
    
        for(i=0;i<SIZE;i++)
        {
            printf("%d ",a[i]);
        }
        printf("
    ");
        //bubblesort(a);
        //selectsort(a);
        //quicksort(a,0,SIZE-1);
        InsertSort(a,SIZE);
    
        for(j=0;j<SIZE;j++)
        {
           printf("%d ",a[j]);
        }
        int x;
        printf("
    Please input the number you want to find:");
        scanf("%d",&x);
        int pos=BinSearch(a,0,SIZE-1,x);
        printf("The position of %d is: %d
    ",x,pos+1);
    
    
        //**************************
    
        struct node *cir;
        int c,king;
        printf("The total of circle:");
        scanf("%d",&c);
        cir=circle(c);
        king=select(cir,c,3);
        printf("The king is:%d
    ",king);
    
    
    
        //**************************
        struct node *p,*q,*m;
        int n,mm;
        printf("Please input the total node you want:");
        scanf("%d",&n);
        p=creat(n);
        printf("Please input the total node you want:");
        scanf("%d",&mm);
        q=creat(mm);
    
        /*
        p=p->next;
        while(p)
        {
            printf("%d ",p->num);
            p=p->next;
        }*/
        //printf("
    after reverse:
    ");
        //q=creat(n);
        //reverse(p);
        m=merge(p,q);
        printf("
    after reverse:
    ");
        m=m->next;
        while(m)
        {
            printf("%d ",m->num);
            m=m->next;
        }
        /*
        p=p->next;
        while(p)
        {
            printf("%d ",p->num);
            p=p->next;
        }
        */
    
        //
    
        FILE *fp;
        if((fp=fopen("d:\st.dat","wb+"))==NULL)
        {
            printf("Cannot open!
    ");
            return ;
        }
        pw=sw;
        pr=sr;
        printf("Please input data:name num
    ");
        for(i=0;i<5;i++)
        {
            scanf("%s%d",sw[i].name,&sw[i].num);
        }
        fwrite(pw,sizeof(struct stud),5,fp);
        rewind(fp);
        fread(pr,sizeof(struct stud),5,fp);
        for(i=0;i<5;i++)
            printf("%s %d",sw[i].name,sw[i].num);
    
    
        return 0;
    }
    void selectsort(int a[])
    {
        int i,j,key,temp;
        for(i=0;i<SIZE-1;i++)
        {
            key=i;
            for(j=i+1;j<SIZE;j++)
            {
                if(a[key]>a[j])
                    key=j;
            }
            if(key!=i)
            {
                temp=a[key];
                a[key]=a[i];
                a[i]=temp;
            }
        }
    }
    
    void bubblesort(int *a)
    {
        int i,j,temp;
        for(i=0;i<SIZE-1;i++)
        {
            for(j=0;j<SIZE-i-1;j++)
            {
                if(a[j]>a[j+1])
                {
                    temp=a[j];
                    a[j]=a[j+1];
                    a[j+1]=temp;
                }
            }
        }
    }
    
    void quicksort(int *a,int l,int r)
    {
        int i=l,j=r,key=a[l];
        if(l>=r)
            return ;
        while(i<j)
        {
            while(i<j&&a[j]>=key)
                j--;
            a[i]=a[j];
            while(i<j&&a[i]<=key)
                i++;
            a[j]=a[i];
        }
        a[i]=key;
        quicksort(a,l,i-1);
        quicksort(a,i+1,r);
    }
    
    int BinSearch(int *a,int s,int t,int key)
    {
        int low=s,high=t,mid;
        if(s<=t)
        {
            mid=(low+high)/2;
            if(a[mid]==key)
                return mid;
            else if(a[mid]>key)
                return BinSearch(a,low,mid-1,key);
            else
                return BinSearch(a,mid+1,high,key);
        }
        return -1;
    }
    
    struct node * creat(int n)
    {
        int i;
        struct node *head,*p,*tail;
        head=(struct node *)malloc(sizeof(struct node));
        head->next=NULL;
        tail=head;
        for(i=0;i<n;i++)
        {
            p=(struct node *)malloc(sizeof(struct node));
            scanf("%d",&p->num);
            p->next=NULL;
            tail->next=p;
            tail=p;
        }
        return head;
    
    }
    void reverse(struct node *head)
    {
        struct node *p,*q;
        p=head->next;
        head->next=NULL;
        while(p)
        {
            q=(struct node *)malloc(sizeof(struct node));
            q->num=p->num;
            q->next=head->next;
            head->next=q;
            p=p->next;
        }
    }
    
    struct node *merge(struct node *head1,struct node *head2)
    {
        struct node *h1,*h2,*tail;
        h1=head1->next;
        h2=head2->next;
        tail=head1;
        head2->next=NULL;
        while(h1&&h2)
        {
            if(h1->num<h2->num)
            {
                tail->next=h1;
                tail=h1;
                h1=h1->next;
            }
            else
            {
                tail->next=h2;
                tail=h2;
                h2=h2->next;
            }
        }
        if(h1)
            tail->next=h1;
        else
            tail->next=h2;
        return head1;
    }
    
    struct node * circle(int n)
    {
        struct node *p,*head,*tail;
        int i;
        head=(struct node *)malloc(sizeof(struct node));
        tail=head;
        head->next=NULL;
        scanf("%d",&head->num);
        for(i=2;i<=n;i++)
        {
            p=(struct node *)malloc(sizeof(struct node));
            scanf("%d",&p->num);
            p->next=NULL;
            tail->next=p;
            tail=p;
        }
        p->next=head;
        return head;
    }
    
    int select(struct node *head,int n,int m)
    {
        struct node *p,*q;
        int i=0,count=0;
        //p=head->next;
        q=head;
        while(q->next!=head)
            q=q->next;
        while(count<n-1)
        {
            i++;
            p=q->next;
            if(i%m==0)
            {
                printf("%3d ",p->num);
                q->next=p->next;
                count++;
            }
            else
                q=p;
        }
        printf("
    ");
        return q->num;
    }
    
    void InsertSort(int a[],int length)
    {
        int i,j,key;
        //length=strlen(a);
        for(i=1;i<length;i++)
        {
            key=a[i];
            for(j=i-1;j>=0;j--)
            {
                if(a[j]>key)
                    a[j+1]=a[j];
                else
                    break;
            }
    
            a[j+1]=key;
        }
    }
    void WordCount(char str[])
    {
        int i,word=0,num=0;
        for(i=0;str[i]!='';i++)
        {
            if(str[i]==' ')
                word=0;
            else if(word==0)
            {
                num++;
                word=1;
            }
        }
        printf("Total Number:%d
    ",num);
    
    }
    

      

  • 相关阅读:
    php7下安装event扩展
    ReactPHP── PHP版的Node.js(转)
    如何将python中的List转化成dictionary
    python3中的zip函数(转)
    python requests的content和text方法的区别(转)
    解决python3 UnicodeEncodeError: 'gbk' codec can't encode character 'xXX' in position XX(转)
    Python语言特性之3:@staticmethod和@classmethod
    Linux 按时间批量删除文件(删除N天前文件)
    简述 OAuth 2.0 的运作流程(转)
    基于jQuery8款超赞的评分插件
  • 原文地址:https://www.cnblogs.com/liesun/p/6569294.html
Copyright © 2011-2022 走看看