weinan030416

导航

链表实现

输入数字并输出的链表

#include<iostream>
#include <stdlib.h>
using namespace std;
​
struct Node
{
    int data;
    struct Node*next;
};
​
int main()
{
    int num;
    cin>>num;
    Node*head,*p,*q,*t;
    head=NULL;
    for(int i=0;i<num;i++)
    {
        p=(struct Node*)malloc(sizeof(struct Node));
        cin>>p->data;
        p->next=NULL;
        if(head==NULL)
        {
            head=p;
        }
        q->next=p;
        q=q->next;
    }
    for(t=head;t!=NULL;t=t->next)
    {
        cout<<t->data;
    }
}
p->data相当于*p.data
要设置头指针
牢记指向下一个结点
q->next=p;
q=q->next;
不可以用p=p->next;
#include<iostream>
#include <stdlib.h>
using namespace std;

struct Node
{
    int data;
    struct Node*next;
};

int main()
{
    Node*head,*p,*q,*t;
    head=(struct Node*)malloc(sizeof(struct Node));
    p=(struct Node*)malloc(sizeof(struct Node));
    head=p;
    cin>>p->data;
    p=p->next;
//    head=p;1
    p=(struct Node*)malloc(sizeof(struct Node));
//    head=p;2
    cin>>p->data;
    cout<<head->data;
}
//head=p这一句放在一处不能正确输出结果,只有放在二处才可以,因为一处p结点还没有分配空间 

双向链表 

#include<iostream>
#include<stdlib.h>
using namespace std;

struct Node
{
    int data;
    struct Node *next;
    struct Node *pri;
};

int main()
{
    int num,n;
    cin>>num;
    Node *head,*p,*q;
    head=NULL;
    head = p = new Node;
    
    for(int i=0;i<num;i++)
    {
        p->next=new Node;
        cin>>n;
        p->data=n;
        q=p;
        p=p->next;
        p->pri=q;
    }
    
    p->next=NULL;
    for(p=head;p->next!=NULL;p=p->next)
    {
        cout<<p->data<<" ";
    }
    cout<<endl;
    for(p=p->pri;p!=head->pri;p=p->pri)
    {
        
        cout<<p->data<<" ";
    }
        
}

 

posted on 2022-10-05 09:56  楠030416  阅读(18)  评论(0编辑  收藏  举报