C语言 严蔚敏数据结构 线性表之链表实现
Posted alei777
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言 严蔚敏数据结构 线性表之链表实现相关的知识,希望对你有一定的参考价值。
博主最近在考成都大学皇家计算机科学与技术专业,复习专业课数据结构,正好学习到线性结构中的线性表用链表这种存储结构来实现。
首先,数据结构包括1、数据的操作2、逻辑结构3、存储结构(数据结构三要素。
直接上代码,现阶段代码实现功能有:链表初始化、遍历、增、删、返回链表长度,后续功能陆续发布。其中肯定有很多问题,希望各位码哥留言。
Linklist* InitList(int i)//i为链表大小 { Linklist *head; head = (Linklist*)malloc(sizeof(Linklist)); Linklist *end=head; int j = 0; for (j = 0;j < i;j++) { Linklist *node = (Linklist*)malloc(sizeof(Linklist)); scanf("%d", &node->data); end->next = node; end = node; } end->next = NULL; return head; }
int GetLenLinklist(Linklist *head)//获取带头结点链表长度 { int length; Linklist *p; p = head; for (length = 0;p->next != NULL;length++) { p = p->next; } return length; }
void LinklistMap(Linklist *head,int length)//遍历整个链表 { Linklist *p; p = head->next; int i; for (int i=0;i<length;i++) { printf("第%d个值为%d", i+1 , p->data); p = p->next; } }
void InsertLinkList(Linklist *head,int i,int data)//在第i个结点后插入 一个结点 { Linklist *p = head; int j = 0; while (p->next!=NULL&&j < i - 1) { p = p->next; ++j; } if (!p || j > i - 1) printf("当前链表为空"); else { Linklist *node = (Linklist*)malloc(sizeof(Linklist)); node->data = data; node->next = p->next; p->next = node; } }
void DelLinklist(Linklist *head, int data)//删除结点值=data的结点。 { Linklist *p, *q; q = head; p = head->next; while (p->next != NULL && p->data != data) { p = p->next; q = q->next; } if (p->data!=data&&p->next == NULL) printf("链表中无此节点"); else { q->next = p->next; free(p); } }//还未实现多个结点==某个值
后续即将更新,再插入和删除操作中,记住赵海英老师上课的话,先连接,后删除!
本博客唯一解释权:成都大学信息科学与工程学院学习委员雷雷提
以上是关于C语言 严蔚敏数据结构 线性表之链表实现的主要内容,如果未能解决你的问题,请参考以下文章
数据结构(C语言版)严蔚敏(线性表队列栈数组树图等数据结构参考代码,持续更新中。。。)
数据结构(C语言版)严蔚敏(线性表队列栈串树图等数据结构参考代码,持续更新中。。。)