线性链表的基本操作

线性链表常见的操作:插入,删除,查找等等。以下采用尾插法建立的线性链表。

#include 
#include 
#include 

using namespace std;

struct node
{
    int val;
    node *next;
};

node *head,*p,*q;

void Init()
{
    head = new node();
    q = head;
}

void Insert(int x)   //尾插法
{
    p = new node();
    p->val = x;
    q->next = p;
    q = p;
    q->next = NULL;
}

int Find(node *t,int k) //查找第k个元素的值
{
    int cnt = 1;
    node *p = t;
    p = t->next;
    while(p != NULL && (cnt < k))
    {
        p = p->next;
        cnt++;
    }
    return p->val;
}

bool Search(node *t,int x)  //查找键值为x的元素是否在链表中
{
    node *p = t;
    while(p != NULL)
    {
        if(p->val == x) return true;
        p = p->next;
    }
    return false;
}

void Delete(node *t,int x)
{
    node *q = t,*p;
    p = q->next;
    while(p != NULL && (p->val != x))
    {
        q = p;
        p = p->next;
    }
    q->next = p->next;
    delete p;
}

void Print()
{
    node *t = head;
    t = t->next;
    while(t != NULL)
    {
        printf("%d ",t->val);
        t = t->next;
    }
    cout<>n)
    {
        Init();
        while(n--)
        {
            cin>>x;
            Insert(x);
        }
        Print();
    }
    return 0;
}


 

 

你可能感兴趣的:(数据结构)