欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

离散存储_链表

发布时间:2024/9/21 编程问答 35 豆豆
生活随笔 收集整理的这篇文章主要介绍了 离散存储_链表 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

链表的定义:

链表也是一种线性表,它的数据的逻辑组织形式是一维的。链表的物理存储结构使用一组地址任意的存储单元存储数据的。在链表中每个结点可以是一个结构体元素,当然也可以是其他构造类型元素。在链表的每一个结点中,有一个专门用来存档指针的域,用这个指针来存放后继结点的地址。 一个链表通常有一个表头,它是一个指针变量,用来存放第一个结点的地址。此外,链表的最后一个结点的指针域要置空(NULL),因为它没有后继结点。 一个链表的结点可以使用以下代码描述: typedef struct Node {int data; /*数据域*/struct Node * next; /*指针域*/ } NODE, *PNODE;

创建一个链表:

#include<stdio.h> #include<stdlib.h> #include<malloc.h>typedef struct Node {int data; /*数据域*/struct Node * pNext; /*指针域*/ } NODE, * PNODE;PNODE create_list(void); void traverse_list(PNODE);int main(void) {PNODE pHead= NULL;pHead = create_list(); //创建一个非循环单链表return 0; }PNODE create_list(void) {int len;int i;int val;PNODE pHead = (PNODE)malloc(sizeof(NODE));if(NULL == pHead){printf("分配失败!\n");exit(-1);}PNODE pTail = pHead;pTail->pNext = NULL;printf("请输入链表的长度:len = ");scanf("%d",&len);for(i=0;i<len;i++){printf("请输入第 %d 个结点的值:",i+1);scanf("%d",&val);PNODE pNew = (PNODE)malloc(sizeof(NODE));if(NULL == pHead){printf("分配失败!\n");exit(-1);}pNew->data = val;pTail->pNext = pNew; //pTail指向最后一个结点pNew->pNext = NULL;pTail = pNew;}return pHead;}

遍历链表:

void traverse_list(PNODE pHead) {PNODE p = pHead->pNext;while(NULL != p){printf("%d ",p->data);p = p->pNext;}printf("\n"); }

判断链表是否为空:

int is_empty(PNODE pHead) {if(NULL == pHead){printf("链表为空!\n");return 1;}else{return 0;} }

计算链表的长度:

int length_list(PNODE pHead) {PNODE p = pHead->pNext;int len = 0;while(NULL != p){len++;p = p->pNext;}return len; }



















转载于:https://www.cnblogs.com/xpeng-V/p/7349672.html

总结

以上是生活随笔为你收集整理的离散存储_链表的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。