• 链表


    /*******main*******/

    #include <stdio.h>
    #include <stdlib.h>
    #include "Linklist.h"
    /* run this program using the console pauser or add your own getch, system("pause") or input loop */

    /*

    张光祥 201603041032

    */


    int main(int argc, char *argv[]) {
    Linklist L;
    Student e;
    //char name[30];
    int key=-1,num,i;
    char num2[20];
    printf("1.初始化 默认  ");
    printf("2.查找  ");
    printf("3.第一个与e相等的值的位置  ");
    printf("4.插入  ");
    printf("5.删除  ");
    printf("6.长度  ");
    printf("7.输出线性表  ");
    printf("8.结束 ");
    InitList(&L);
    for(int i=1;i<=2;i++){
    ListInsert(&L,i,myscanf());

    while(key){
    printf("你将要: ");
    scanf("%d",&num); 
    switch(num){
    case 1:
    InitList(&L);
    break;
    case 2:
    printf("你想找第几个 ");
    scanf("%d",&i); 
    GetElem(L,i,&e);
    printf("第%d个是",i);
    myprintf(e);
    printf(" ");
    break;
    case 3:
    printf("你想要查找的姓名为 ");
    scanf("%s",&num2);
    if(LocateElem(L,num2)){
    printf("%s位于第%d个位置 ",num2,LocateElem(L,num2)) ;
    }else{
    printf("不存在该值 ");
    }
    break;
    case 4:
    printf("插入位置是? ");
    scanf("%d",&i);
    printf("插入值为 ");
    ListInsert(&L, i, myscanf());
    break;
    case 5:
    printf("你想删除第几个 ");
    scanf("%d",&i); 
    ListDelete(&L,i);
    break;
    case 6:
    printf("线性表的长度是%d ",Getlength(L)) ;
    break;
    case 7:
    ListTraverse(L);
    break;
    case 8:
    key=0;
    break;
    default:
    printf("输入有误 ");break;
    }
    }
    return 0;

    }

    /*******LinkList*******/

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    /*
    学生结构体 
    */
    typedef struct{
    char no[20];
    char name[30];
    int result;
    }Student;
    /*
    格式化输入结构体
    */
    Student myscanf(){
    Student stu;
    scanf("%s%s%d",&stu.no,&stu.name,&stu.result);
    return stu;

    /*
    格式化输出结构体 
    */
    void myprintf(Student e){
    printf("学号:%s  姓名:%s  成绩:%d",e.no,e.name,e.result);

    /*
    链表结构体 
    */ 
    typedef struct Lnode{
    Student date;
    struct LNode *next;
    }LNode,*Linklist;
    /*
    链表的初始化 
    */
    int InitList(Linklist *L){
        *L=(Linklist)malloc(sizeof(LNode)); 
        if(!(*L)) 
        {
            return 0;
        }
        (*L)->next=NULL;
        return 1 ;
    }
    /*
    链表的插入 
    */
    int ListInsert(Linklist *L,int i,Student e)
    {
        int j;
        Linklist p,s;
        p = *L;    
        j = 1;
        while (p && j < i)    
        {
            p=p->next;
            ++j;
        }
        if (!p || j > i)
            return 0;  
        s = (Linklist)malloc(sizeof(LNode));
        s->date = e;
        s->next = p->next;     
        p->next = s;          
        return 1;
    }
    /*
    链表的遍历 
    */
    int ListTraverse(Linklist L)
    {
        Linklist p=L->next;
        while(p)
        {
            myprintf(p->date);
            printf(" ") ;
            p=p->next;
        }
        printf(" ");
        return 1;
    }
    /*链表的删除*/
    int ListDelete(Linklist *L,int i) {
    int j;
        Linklist p,q;
        p = *L; 
        j = 1;
        while (p->next && j < i) 
        {
            p = p->next;
            ++j;
        }
        if (!(p->next) || j > i)
            return 0;           
        q = p->next;
        p->next = q->next;          
        free(q);                   
        return 1;
    }
    /*
    链表的取值
    */
    int  GetElem(Linklist L,int i,Student *e)
    {
        int j;
        Linklist p;    
        p = L->next;     
        j = 1;     
        while (p && j < i)  
        {
            p = p->next;  
            ++j;
        }
        if ( !p || j>i )
            return 0;  
        *e = p->date;   
        return 1;
    }


    /*链表根据姓名取值*/ 
    int LocateElem(Linklist L,char name[])
    {
        int i=0;
        Linklist p=L->next;
        while(p)
        {
            i++;
            if(strcmp(p->date.name,name)==0) 
                    return i;
            p=p->next;
        }
        return 0;
    }
    /*
    链表长度 
    */
    int Getlength(Linklist L){
    int j;
        Linklist p;
        p = L;    
        j = 0;
        while (p->next)    
        {
            p=p->next;
            ++j;
        }
    return j;




     

  • 相关阅读:
    python爬虫学习(7) —— 爬取你的AC代码
    python爬虫学习(6) —— 神器 Requests
    python爬虫学习(5) —— 扒一下codeforces题面
    python爬虫学习(4) —— 手刃「URP教务系统」
    听说你叫爬虫(3) —— 模拟登陆
    python爬虫学习(2) —— 爬一下ZOL壁纸
    python爬虫学习(1) —— 从urllib说起
    数据结构/ 串的模式匹配法 / kmp算法与next数组的构造
    ADWORLD web/PHP2
    ADWORLD web/upload1
  • 原文地址:https://www.cnblogs.com/zhangguangxiang/p/14232664.html
Copyright © 2020-2023  润新知