单链表实现

 

 

 

数据结构与算法——单链表的实现及原理 - Suozhiyuan - 博客园 (cnblogs.com)

C/C++语言实现单链表(带头结点) - 两猿社 - 博客园 (cnblogs.com)

链表(单链表)的基本操作及C语言实现 (biancheng.net)

 

 

 

 

//链接1的方法
#include<bits/stdc++.h>
using namespace std;

class node {
public:
    int data;
    node* next;
};

bool initlist(node*& temp) {
    temp = new node;
    //if(!temp)
    if (temp == NULL) return false;
    temp->next = NULL;
    return true;
}
//头插
bool insert(node*& temp, node* flag) {
    if (!temp || !flag) return 0;
    flag->next = temp->next;
    temp->next = flag;
    return true;
}
//尾插
bool insert_b(node*& temp, node* f) {
    node* last = NULL;
    if (!temp || !f) return 0;
    last = temp;
    while (last->next) last = last->next;
    f->next = NULL;
    last->next = f;
    return true;
}

void print(node*& temp) {
    node* p;
    p = temp->next;
    while (p) {
        cout << p->data << " ";
        p = p->next;
    }
    cout << endl;
}

int main() {
    node* l = NULL;
    node* s = NULL;
    //初始化
    initlist(l);

    int a[9] = { 5,3,2,4,8,9,7,1,10 };
    for (auto i = 0; i < 9; i++) {
        s = new node;
        s->data = a[i];
        insert_b(l,s);
    }
    print(l);
}

 

//根据二叉树修改的方法
#include<bits/stdc++.h> using namespace std; class node { public: int data; node* next; }; class linklist { public: linklist(); void insert(node* &temp, int data); node* head;//头指针 }; linklist::linklist() { head = new node; head->next = NULL; } void linklist::insert(node*&temp,int data) { if(temp->next == NULL){ node* temp1 = new node; temp->next = temp1; temp1->data = data; temp1->next = NULL; } else insert(temp->next, data); } void traverse(node* temp) { // node* p; if (temp->next != NULL) { cout << temp->next->data << " "; traverse(temp->next); } else return; } int main() { linklist* l = new linklist; int a[9] = { 5,3,2,4,8,9,7,1,10 }; for (auto i = 0; i < 9; i++) { l->insert(l->head,a[i]); } traverse(l->head); return 0; }

 

posted @ 2022-03-20 20:36  Dsad123FFFG6645  阅读(54)  评论(0)    收藏  举报