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( "
    请按任意键退出..." );
    }
  • 相关阅读:
    7. 流程控制
    6. 工作区域与包
    5. Go函数
    4. Go常量
    面试题1
    数据库三范式
    触发器和存储过程
    面试题
    js 程序执行与顺序实现详解 ,来自网上
    基础的优化数据库查询,个人笔记
  • 原文地址:https://www.cnblogs.com/ziwuxian/p/13992608.html
Copyright © 2011-2022 走看看