数据结构1-简单单链表的创建

来源:互联网 发布:知乎精华 mobi 编辑:程序博客网 时间:2024/05/15 21:51

线性表(顺序表-(静态),链式表-(单链表,双向链表,循环链表))

链表:

链表的基本结构特征:

用Struct创建一个链表节点结构体:

typedef struct{     int date;              //数据域,可以存放任何数据,以及个数据,用一个int型做特征表示     struct Node *next;     //指针域,指向下一个节点}Node;                      //链表节点变量名
链表创建完成后:


函数:

(1)尾插法:顾名思义就是在链表尾部一个一个将新的节点接到链表上面,扩充链表的长度,使链表按顺序排列;

void Creat_List(Node *head,int lenth)                         //传入一个头结点,以及待创建的链表长度创建链表{    Node * p = head;//用一个新的指针记录这个节点地址    while(lenth --)    {        Node * pnew = (Node *)malloc(sizeof(Node ));          //动态申请一个新节点空间        scanf("%d",&pnew->date);                              //在新节点数据域中填入数据        pnew->next = NULL;                                    //将新节点的指针域设为NULL ,这里用的是尾插法        p->next = pnew;                                       //将新节点连接到链表上        p = pnew;                                             //将指针位置移到新节点位置准备连接下一个新节点    }}

尾插法图示:  

(2)头插法:与尾插法相反,是将链表起始点作为尾部,往链表的“前面”插入新的节点,使构成的链表逆序排列;

void Creat_List(Node *head,int lenth)//头插法{    head->next = NULL;//传入的节点当做链表最后一个节点    while(lenth --)    {        Node * pnew = (Node *)malloc(sizeof(Node));//申请新节点空间        scanf("%d",&head->date);//将尾节点数据域填充        pnew->next = head;//新节点连上尾节点        head = pnew;//头结点地址改变,将头结点移至新节点位置    }}

图示:





原创粉丝点击