zoukankan      html  css  js  c++  java
  • C语言最简单的双向链表源码

    #include <stdio.h>
    #include <stdlib.h>
    
    typedef struct node
    {
        char        name[20];
        struct node    *prior, *next;
    } stud;
    
    
    stud* creat( int n )
    {
        stud    *p, *h, *s;
        int    i;
        h        = (stud *) malloc( sizeof(stud) );
        h->name[0]    = '';
        h->prior    = NULL;
        h->next        = NULL;
        p        = h;
    
        for ( i = 0; i < n; i++ )
        {
            s    = (stud *) malloc( sizeof(stud) );
            p->next = s;
            printf( "输入第个%d学生的姓名:", i + 1 );
            scanf( "%s", s->name );
            s->prior    = p;
            s->next        = NULL;
            p        = s;
        }
    
        p->next = NULL;
        return(h);
    }
    
    
    stud * search( stud *h, char * x )
    {
        stud    *p;
        char    *y;
        p = h->next;
        while ( p )
        {
            y = p->name;
            if ( strcmp( y, x ) == 0 )
                return(p);
            else
                p = p->next;
        }
        printf( "没有找到数据
    " );
    }
    
    
    void del( stud *p )
    {
        p->next->prior    = p->prior;
        p->prior->next    = p->next;
        free( p );
    }
    
    
    void main()
    {
        int    number;
        char    sname[20];
        stud    *head, *sp;
        puts( "请输入链表的大小:" );
        scanf( "%d", &number );
        head    = creat( number );
        sp    = head->next;
        printf( "
    现在这个双向链表是:
    " );
        while ( sp )
        {
            printf( "%s ", &*(sp->name) );
            sp = sp->next;
        }
        printf( "
    请输入你想查找的姓名:
    " );
        scanf( "%s", sname );
        sp = search( head, sname );
        printf( "你想查找的姓名是:%s
    ", &*(sp->name) );
        del( sp );
        sp = head->next;
        printf( "
    现在这个双向链表是:
    " );
        while ( sp )
        {
            printf( "%s ", &*(sp->name) );
            sp = sp->next;
        }
        printf( "
    " );
        puts( "
    请按任意键退出..." );
    }
  • 相关阅读:
    C#实现RSA加密与解密、签名与认证
    RSA公钥加密,私钥解密的程序示例
    C#中自定义属性的例子
    HTTPS简单原理介绍
    深入浅出HTTPS基本原理
    WebClient请求帮助类
    WebApi安全性 使用TOKEN+签名验证
    jsvascript === 和==的区别
    UML中的图的出现顺序
    UML从需求到实现----用例
  • 原文地址:https://www.cnblogs.com/ziwuxian/p/13992608.html
Copyright © 2011-2022 走看看