码迷,mamicode.com
首页 > 其他好文 > 详细

C链表一——链表增删改查以及初始化的头插法与尾插法

时间:2014-11-10 19:29:37      阅读:341      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   color   ar   os   sp   strong   

线性表的链式存储又称为链表(物理实现方式);

链式存储是最常用的存储方式之一。它不仅可以用来表示线性表,而且可以用来表示各种非线性的数据结构;

链表又可分为单链表、双链表、循环链表等。

一:单链表

所谓单链表是指数据结点是单向排列的。它包括两个域,一个信息域用于存放数据,一个指针域用于存放下个结点的地址

单链表中结点类型的描述如下:

struct Node
{
    ElemType data_;  
    Node *next_;  
};

利用单链表可以解决顺序表需要大量的连续的存储空间的缺点,但是单链表附加了指针域,也带来了浪费存储空间的缺点。
注意:本文所有程序都是用“头指针”来表示一个单链表,而没有用带头结点的单链表。

头指针:是指向单链表第一个结点的指针;

头结点:单链表第一个结点之前附加的一个结点,此时,头指针指向头结点,头结点的指针域指向单链表的第一个结点;

结点的定义以及打印函数:

bubuko.com,布布扣
//结点声明
typedef struct tag
{
    int Nnum_;
    struct tag *Nnext_;
}Node, *pNode;

//打印函数
void link_print(pNode phead)
{
    while(phead != NULL)
    {
        printf("Node_value:%4d\n", phead->Nnum_);
        phead = phead->Nnext_;
    }
}
View Code

一:利用尾插法初始化单链表

bubuko.com,布布扣
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

typedef struct tag
{
    int Nnum_;
    struct tag *Nnext_;
}Node, *pNode;


void link_print(pNode phead)
{
    while(phead != NULL)
    {
        printf("Node_value:%4d\n", phead->Nnum_);
        phead = phead->Nnext_;
    }
}

void link_init_tail(pNode *phead, int size) //传的是地址
{
    pNode pNew = NULL;
    pNode pTail = NULL;

    while( size > 0)
    {
        //申请内存
        pNew = (pNode)malloc(sizeof(Node)); //注意这里为何不用pNode而用Node,因为sizeof(pNode) = 4
        //赋值
        pNew->Nnum_ = rand()%1000;
        //插入链表
        if(*phead == NULL) //链表为空时
        {
            *phead = pNew;//连接新的结点
            pTail = pNew;
        }
        else//不为空
        {
            pTail->Nnext_ = pNew ; //连接新的结点
             pTail = pNew; //改名字
        }
        
        size --;
    }
}

int main(int argc, char const *argv[])
{
    srand(time(NULL));
    pNode phead = NULL;
    link_init_tail(&phead, 10);

    link_print(phead);

    return 0;
}
View Code

 

C链表一——链表增删改查以及初始化的头插法与尾插法

标签:style   blog   http   io   color   ar   os   sp   strong   

原文地址:http://www.cnblogs.com/xfxu/p/4087707.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!