linux C 数据结构之单链表

来源:互联网 发布:用在淘宝上的比价神器' 编辑:程序博客网 时间:2024/06/05 03:54

基础学习,只有一种数据类型的单链表
对链表的理解:
一种链式存储结构,通过指针指向下一个要存储的数据的地址,在内存中不要求链表中各个数据内存连续,与数组不同,链表由节点组成,通过指针链接。

对链表概念的理解:
头指针:头指针指向链表的第一个节点
头节点:头节点在定义头指针时产生

struct node{    int data;    struct node *pNext;};

链表类型定义
data为链表该节点存储的数据
pNext指向下一个节点

对链表的操作包括:创建节点、在链头插入节点、在链尾插入节点、删除节点、遍历链表。

创建节点步骤:
1、申请一个节点大小的内存空间
2、检查空间是否申请成功
3、清理申请到的内存空间
4、填充该节点的数据
5、将节点中的指针初始化为NULL

struct node * creat_node(int data){    struct node * p = (struct node *)malloc(sizeof(struct node));    if(NULL == p){        printf("malloc error !\n");        return NULL;    }    bzero(p,sizeof(struct node));    p->data = data;    p->pNext= NULL;    return p;}

在链头插入节点步骤:
1、新节点指向原来的第一节点
2、头节点的指针指向新的节点

void insert_head(struct node*pH,struct node*new){    new->pNext = pH->pNext;    pH->pNext = new;}

在链尾插入节点步骤:
1、找到链位节点(该节点的指针为NULL)
2、将链位节点指针指向新节点

void insert_tail(struct node*pH,struct node*new){    struct node*p = pH;    while(NULL != p->pNext){        p = p->pNext;    }    p->pNext = new;}

删除节点:

引用块内容

遍历链表步骤:
1、由头节点开始遍历并判断当前节点是否为尾节点
2、不是尾节点则取出数据并移动到下一个节点
3、是尾节点,取出数据并停止遍历

void list_foreach(struct node*pH){    struct node *p = pH;    printf("start____________________\n");    while(NULL != p->pNext){        p = p->pNext;        printf("data = %d\n",p->data);    }    printf("data = %d\n",p->data);    printf("end____________________\n");}
原创粉丝点击