• 数据结构单链表


    折磨了我三天的单链表今天晚上给它完成了,莫名的舒心。代码实现单链表的定义和创建,给单链表赋值求其长度、给任意的序号或者元素值寻找元素值或者序号。写完程序代码的第一感觉就是代码需要经常写,不写就更加不会写,hhhh

    #include<stdio.h>
    #include<stdlib.h>
    typedef int DataType;
    typedef struct node{
    DataType data;
    struct node *link;
    } LinkNode, *LinkList;

    void printList(LinkNode*first){
    if(first==NULL) return;
    printf("%d ",first->data);
    printList(first->link);
    } ;
    //尾插发建立一个单链表
    void clearListRear (LinkList &last, DataType endTag){
    DataType val;
    printf("请输入结点元素:");
    scanf("%d",&val);
    if(val==endTag)
    last=NULL;
    else {
    last = (LinkNode*) malloc (sizeof (LinkList));//创建头结点
    if(!last) {
    printf("存储分配错误! ");
    exit(1);
    }
    last->data=val;
    clearListRear (last->link, endTag);
    }
    }
    int Length(LinkList &first){
    //计算表的长度,函数返回表的长度
    LinkNode*p=first->link;
    int count=0;
    while (p!=NULL){
    p=p->link;
    count++;
    }
    printf("单链表的长度:%d",count);
    };
    LinkNode *Locate (LinkList &first ,DataType i){
    //任意给一个序号的元素值
    if(i<0) return 0;
    LinkNode *p=first->link;
    int k=1;
    while(p!=NULL&&k<i){
    p=p->link;
    k++;
    }
    printf("对应的data值为:%d",p->data);
    }
    LinkNode *Search (LinkList &first ,DataType x){
    //任意给定一个元素值找序号
    LinkNode *p=first->link;
    int a=1;
    while(p!=NULL&& p->data!=x){
    p=p->link;
    a++;
    }
    printf("对应的序号为:%d",a);
    }
    main(){
    int i;
    int x;
    LinkList L;DataType endTag;
    printf("请输入约定的输入结束标志:");
    scanf("%d",&endTag);
    L=(LinkNode*)malloc(sizeof(LinkNode));//创建头结点
    if(!L){
    printf("储存分配错误! ");
    exit(1);
    }
    LinkNode*rear=L; //尾指针,初始时指向头结点
    clearListRear(rear->link, endTag); //递归建立单链表
    printList(L->link); //以下一结点为表头继续输出
    Length(L);
    printf(" 任意给定一个元素的序号:");
    scanf("%d",&i);
    Locate(L,i);
    printf(" 任意给定一个元素的值:");
    scanf("%d",&x);
    Search(L,x);

    }

  • 相关阅读:
    拦截器
    git和bootstrap
    java面试题目
    Struts2笔记
    sql语句的面试题
    公司面试总结
    面试题12 包含 min 函数的栈 【栈】
    面试题11 字符串的排列[算法]
    [面试] 进程和线程的区别(面试题)
    [baidu] 面向对象的三个基本要素和五项基本设计原则
  • 原文地址:https://www.cnblogs.com/lvzhiqi/p/10693443.html
Copyright © 2020-2023  润新知