700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 线性表 ----链表的C语言实现

线性表 ----链表的C语言实现

时间:2022-06-22 18:35:40

相关推荐

线性表 ----链表的C语言实现

独角兽企业重金招聘Python工程师标准>>>

本人刚开始研究数据结构,欢迎拍砖!!!

首先从最简单的线性表开始

1.线性表存储结构

a。顺序存储,最简单来说就是数组了吧,这里就不说了。

b。链式存储,就是来说链表了。

2.链表

在这里使用的是有head的链表,头部不含数据信息。

如图所示

首先是节点信息

//链表节点结构typedef struct node{int data; //节点值域struct node* next;//节点指针域}NODE;

下面介绍关于链表的简单操作,还是直接贴代码吧。。。

一共三个文件。

linkList.H

/************************************************************************//* 操作单链表,该链表带有头部空节点 *//* *//**********************************************************************///链表节点结构typedef struct node{int data; //节点值域struct node* next;//节点指针域}NODE;//查找链表中第K个元素//存在返回该节点指针,不存在返回nullNODE* find_List(NODE* head, int k);//在第K个元素之前插入新的节点NODE* insert_List(NODE* head, int k, int newItem);//删除第K个节点int delete_List(NODE* head, int k);

然后是linkList.cpp

#include "linkList.h"#include <stdio.h>#include <MALLOC.H>NODE* find_List(NODE* head, int k){if (k<1){return NULL;}int i = 1;NODE* p = head->next;while( NULL != p && i < k){p = p->next;++i;}return p;}NODE* insert_List(NODE* head, int k, int newItem){NODE* p;NODE* s = (NODE*)malloc(sizeof(NODE));//创建新的节点s->data = newItem;if (k ==0 ) //空链表{head->next = s;s->next = NULL;return s;}else if (k == 1)//在第一个元素之前插入{p = head;}else{p = find_List(head,k-1);//查找第k-1个元素}if (p==NULL){free(s);return NULL;}s->next = p->next;p->next = s;return s;}int delete_List(NODE* head, int k){NODE* p;if (k==1){p = head;}else{p = find_List(head,k-1);}if (p==NULL || p->next == NULL) //表中不存在{return 0;}NODE* s = p->next;p->next = s->next;free(s);return 1;}

然后是一个测试。

#include "linkList.h"#include <STDIO.H>#include <MALLOC.H>int main(){//构建链表NODE* head = (NODE*)malloc(sizeof(NODE));head->next = NULL;for (int i = 0; i < 10; i++){insert_List(head,i,i);}//打印所有节点NODE* p = head->next;while(p != NULL){printf("%d\n",p->data);p = p->next;}//删除奇数位置节点for(int j = 1; j<10; j = j+1){delete_List(head,j);}//打印所有节点p = head->next;while(p != NULL){printf("%d\n",p->data);p = p->next;}return 0;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。