c/c++语言链表的初级认识

在学习链表之前,希望大家对指针和结构体有一定的认识。因为链表是由指针和结构体构成的。

链表是一种基本的数据结构。是动态分配内存的。它的作用是用来存储数据的。链表在使用前不需要知道存储数据的个数,因为它是根据需要开辟内存单元的。链表中的每一个元素称为结点。每个结点分为两部分,<1>用户需要的实际数据。(数据域)<2>下一个结点的地址(指针域)。链表有表头和表尾,在使用之前表头为空,在使用后表尾指向空。下面是一个简单的链表,大家可以看一下。

#include<iostream>
#include<stdlib.h>  //提供malloc函数 
using namespace std;
struct student
{
    int num;  //用户存储的数据 ,数据域
    struct student *next; //指向下一个结点的指针 ,指针域
};
int main()
{
    struct student *head=NULL,*p,*q;  //head为头指针,开始时头指针为空 ,若是头指针不为空,编译不会报错,但无法运行。
    int i;


    for(i=0;i<2;i++)
{
p=(struct student*)malloc(sizeof(struct student));  /*开辟空间,要注意此时空间是开辟在堆上,需要用户自己释放*/ 
cin>>p->num; //输入数据 
if(head==NULL)
{
head=p;
}
else
{
q->next=p;
}
q=p;
}
q->next=NULL;     //尾指针要指向空 

p=head;
while(p!=NULL) //遍历
{
cout<<p->num<<endl;
p=p->next;
}


while(head!=NULL) //释放

{
p=head;
head=head->next;
free(p);     //释放掉用户开辟的空间 
}


return 0;

这个例子是用malloc函数开辟空间,c和c++均可使用。而用new开辟空间的方式只适用于c++,不适用于c。

猜你喜欢

转载自blog.csdn.net/qq_40663637/article/details/78495799
今日推荐