线性链表的基本操作

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

#include <iostream>
#include <string.h>
#include <stdio.h>

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<<endl;
}

int main()
{
    int n,x;
    while(cin>>n)
    {
        Init();
        while(n--)
        {
            cin>>x;
            Insert(x);
        }
        Print();
    }
    return 0;
}


 

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值