zoukankan      html  css  js  c++  java
  • 单向链表的实现

    #include<iostream>
    #include<ctime>
    using namespace std;

    struct list
    {
    int number;
    list *next;
    };

    int FindLinkList(list *t, int i)
    {
    int j = 0;
    list *p = t;
    while(p&&j < i)
    {
    p = p->next;
    j++;
    }
    if (p)
    return p->number;
    return -1;
    }

    void AddLinkList(list *t, int i, int num)
    {
    int j = 0;
    list *p = t;
    while (p&&j < i)
    {
    p = p->next;
    j++;
    }
    if (p)
    {
    list *s = new list;
    s->next = p->next;
    p->next = s;
    s->number = num;
    }
    }

    void deleteLinkList(list *t, int i)
    {
    int j = 0;
    list *p = t;
    while (p&&j<i-1)
    {
    p = p->next;
    j++;
    }
    if (p&&p->next)
    {
    list *q = p->next;
    if (q->next)
    p->next = q->next;
    else p->next = NULL;
    delete q;
    }
    }
    //头插法
    void createLinkList(list *l, int n)
    {
    srand(time(0));
    list *p;
    for (int i = 0; i < n; i++)
    {
    p = new list;
    p->number = rand() % 100 + 1;
    //cout << p->number << endl;
    p->next = l->next;
    l->next = p;
    }
    }

    //尾插法
    void createlinklist(list *l, int i)
    {
    srand(time(0));
    list *r, *p;
    p = l;
    for (int j = 1; j <= i; j++)
    {
    r = new list;
    r->number = rand() % 100 + 1;
    r->next = p->next;
    p->next = r;
    p = r;
    }
    }

    void clearlinklist(list *t)
    {
    list *p, *q;
    p = t;
    while (p->next)
    {
    q = p->next;
    delete p;
    p = q;
    }
    t->next = NULL;
    }


    void main()
    {

    list *linklist=new list;
    linklist->next = NULL;
    linklist->number = 0;
    /*createLinkList(linklist, 10);*/
    createlinklist(linklist, 10);
    for (int i = 1; i <= 10; i++)
    cout << FindLinkList(linklist, i)<<endl;
    cout << endl;
    deleteLinkList(linklist, 1);
    clearlinklist(linklist);
    for (int i = 1; i <= 9; i++)
    cout << FindLinkList(linklist, i) << endl;


    }

  • 相关阅读:
    二叉排序树
    安全的终止线程的两种方法
    图的广度优先遍历(BFS)
    图的深度优先遍历(DFS)
    volatile的应用
    二叉树的遍历
    Java-反射
    Java--泛型
    单例模式
    剑指Offer--对称二叉树
  • 原文地址:https://www.cnblogs.com/zhengzhe/p/6435290.html
Copyright © 2011-2022 走看看