链表:用C/C++实现单链表的增删改查

2021-04-25 11:26

阅读:509

标签:new   col   输入   增删改   ==   数据   使用   div   理解   

最近复习了线性表,对链表这一部分遗忘最大,所以手动实现一下加深理解,附上C++代码:

#include using namespace std;
typedef struct LNode   //定义一个结构体作为链表结构,有指针域和数据
{
    int data;
    struct LNode* next;
}LNode,*LinkList; //将 struct LNode重命名为LinkList方便使用

void dis(LinkList l) //输出列表
{
    while (l->next != NULL)
    {
        l = l->next;
        cout " " data;
    }
    cout  endl;
}
LinkList insert(LinkList& l,int x)  //头插
{
    LNode* s = (LNode*)malloc(sizeof(LNode));
    s->data = x;
    s->next = l->next;
    l->next = s;
    return l;
}
int getNumber(LinkList l, int x)//按照值查找结点序号
{
    int i = 0;
    while (l != NULL)
    {
        i++;
        if (l->data == x)
        {
            cout "find x=" " ,num=" 1 endl;
            break;
        }
        l = l->next;
    }
    return i;
}
LNode* getElement(LinkList l, int no)//按照序号查找结点
{
    LNode*s = l->next;
    int j = 1;
    while (s->next != NULL && j  no)
    {
        s = s->next;
        j++;
    }
    return s;
}

void delect(LinkList &l, int no)//删除指定序号的节点
{
    LNode* s = getElement(l, no - 1);
    LNode* p;
    p = s->next;
    s->next = p->next;
    cout "delect " data " success"  endl;
    free(p);
}

int main() //依次实现增,查,查,删
{
        LinkList l;
        LNode* s;
        int x;
        l = (LinkList)malloc(sizeof(LNode)); //head
        l->next = NULL;
        cin >> x;
        do
        {
            s = (LNode*)malloc(sizeof(LNode));
            s->data = x;
            s->next = l->next;
            l->next = s;
            cout "new " data  endl;
            cin >> x;
        } while (x>0);   //输入负数后停止
        dis(l);
        l = insert(l, 100);
        dis(l);
        cout "no." 2 " is " 2)->data endl;
        getNumber(l, 1);
        delect(l, 2);
        dis(l);
        return 0;
}

 

链表:用C/C++实现单链表的增删改查

标签:new   col   输入   增删改   ==   数据   使用   div   理解   

原文地址:https://www.cnblogs.com/murenma/p/13258605.html

上一篇:python-进程

下一篇:SpringCloud入门


评论


亲,登录后才可以留言!