加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

数据结构--链表

发布时间:2020-12-16 07:19:18 所属栏目:百科 来源:网络整理
导读:链表(linked list)——顺序表的一种? 逻辑上是连续的但物理上再内存中并不是连续的 在堆中动态分配空间? c --malloc申请空间,free回收 c++--new申请空间,dalete回收(c++好用) #includeiostream using namespace std; struct node{ int data; node * ne

链表(linked list)——顺序表的一种? 逻辑上是连续的但物理上再内存中并不是连续的

在堆中动态分配空间?

c --malloc申请空间,free回收

c++--new申请空间,dalete回收(c++好用)

#include<iostream>
using namespace std;
struct node{
    int data;
    node * next;
};
int n;
//n=new int ;
node* creat(int *arr)//带头节点的链表 
{
    node* p,*head,*pre;
    head=new node;
    head->next=NULL; 
    pre=head;
    for(int i=0;i<n;i++)
    {
        p=new node;
        p->data =arr[i];
        p->next=NULL;
        pre->next=p;
        pre=p;
    }
    return head;
}
//在以head为头结点的链表上计数元素x的个数
int search(node* head,int x){
    int count=0;
    node *p=head->next;
    while(p!=NULL){
        if(p->data==x) count++;
        p=p->next;
    }
    return count;
}
//将x插入以head为头结点的链表的第pos个位置上
void insert(node* head,int pos,int x){
    node* p=head;
    for(int i=0;i<pos-1;i++){
        p=p->next;
    }
    node* q=new node;
    q->data=x;
    q->next=p->next;
    p->next=q;
}
//删除以head为头结点的链表中所有数据域为x的结点
void del(node* head,int x){
    node* p=head->next;
    node* pre=head;
    while(p!=NULL){
        if(p->data==x){
            pre->next=p->next;
            delete(p);
            p=pre->next;
        }else{
            pre=p;
            p=p->next;
        }
    }
}
int main()
{
    cin>>n;
    int *arr=new int[n];
    for(int i=0;i<n;i++)
    cin>>arr[i];
    node* r=creat(arr);
    while(r!=NULL)
    {
        cout<<r->data<<" ";
        r=r->next;
    }
    return 0;
}
    

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读