链表的基本操作

#include<iostream>

using namespace std;

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

node *head,*q; //head是头结点,q指向链表最后一个结点 

void Init() //初始化链表,头结点不存值
{
    head = new node();
    q = head; 
}

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

void Delete(node *t, int x)
{
    node *p0 =t, *p1; //p0是前一个,p1后一个
    p1=p0->next;
    while(p1!=NULL && (p1->val!=x))
    {
        p0=p1;
        p1=p1->next;
    }
    p0->next = p1->next;
    delete p1;
}

int FindByNum(node *t, int num)
{
    int i=1;
    node *p=t->next;
    while(p!=NULL && (i<num))
    {
        p=p->next;
        i++;
    }
    return p->val;
}

int FindByVal(node *t,int val)
{
    node *p=t->next;
    while(p!=NULL)
    {
        if(p->val==val)
        {
            return 1;
        }
        p=p->next;
    }
    return 0;
}

void print()
{
    node *p=head->next;
    while(p != NULL)
    {
        cout<<p->val<<" ";
        p=p->next;
    }
    cout<<endl;
}
int main()
{
    int n,m;
    cin>>n;
    Init();
    while(n--)
    {
        cin>>m;
        Insert(m);
    }
    print();
    cin>>m;
    Delete(head,m);
    print();
    cin>>m;
    cout<<FindByVal(head,m)<<endl;
    print();
    cin>>m;
    cout<<FindByNum(head,m)<<endl;
    print();
    return 0;
}
链表是一种常见的数据结构,不同编程语言实现链表基本操作的方式有所不同,以下分别介绍C语言和Python中链表基本操作。 ### C语言实现链表基本操作 在C语言中,链表基本操作包括创建链表、插入节点、删除节点和遍历链表等。以下是一个遍历链表的示例代码: ```c #include <stdio.h> #include <stdlib.h> // 定义链表节点结构体 typedef struct Node { int data; struct Node* pNext; } NODE, *PNODE; // 遍历链表 void traverse_list(PNODE pHead) { PNODE p = pHead->pNext; // 用指针p指向第一个结点 while (p != NULL) { printf("%-4d", p->data); p = p->pNext; } printf("\n"); } ``` 上述代码中定义了链表节点结构体,并实现了遍历链表的函数,通过遍历每个节点并输出其数据,直到链表末尾 [^1]。 ### Python实现链表基本操作 在Python中,链表操作通常通过定义节点类和相关方法来实现。以下是一个计算链表长度的示例代码: ```python # 定义链表节点类 class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next class Solution: def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode: def getLength(head: ListNode) -> int: length = 0 while head: length += 1 head = head.next return length dummy = ListNode(0, head) length = getLength(head) cur = dummy for i in range(1, length - n + 1): cur = cur.next cur.next = cur.next.next return dummy.next ``` 上述代码中定义了链表节点类,并实现了计算链表长度的功能,通过遍历链表并计数节点数量得到链表长度 [^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值