单链表的初始化,删除,销毁,查找
来源:互联网 发布:sql server 分组统计 编辑:程序博客网 时间:2024/05/18 22:40
单链表的初始化,头删,尾删,头插,尾插,销毁,查找。
Node.h
#ifndef __NODE_H__#define __NODE_H__typedef int DataType;#define NULL 0#include<stdio.h>#include<windows.h>#include<assert.h>typedef struct Node{DataType data;struct Node*next;}Node, *LinkList;void InitList(LinkList *L);//单链表的初始化LinkList BuyNode(DataType data);//产生新节点void PrintList(LinkList L);//打印单链表的值域LinkList Find(LinkList* L, DataType data);//找指定data值,返回其节点void PushBack(LinkList* L, DataType data);//尾插void PushFront(LinkList* L, DataType data);//头插void PopBack(LinkList* L);//尾删void PopFront(LinkList* L);//头删void Destroy(LinkList* L);//单链表的销毁size_t Size(LinkList L);//单链表长度void Erase(LinkList* L,LinkList pos);//删除任意位置的节点void Insert(LinkList pos, DataType data);//在任意节点后插入一个节点#endif//__NODE_H__
Node.c
#define _CRT_SECURE_NO_WARNINGS 1#include"node.h"void InitList(LinkList *L){*L = (Node*)malloc(sizeof(Node));if (*L == NULL){printf("申请内存空间失败");}(*L)->next = NULL;(*L)->data =NULL;}LinkList BuyNode(DataType data){LinkList NewNode = NULL;NewNode = (LinkList)malloc(sizeof(Node));if (NewNode == NULL){printf("为节点创建空间失败");}NewNode->data = data;NewNode->next = NULL; return NewNode;}void PrintList(LinkList L){LinkList Cur = L;if (L == NULL){printf("NULL");}while (Cur->next){printf("%d--->", Cur->data);Cur = Cur->next;}printf("%d--->", Cur->data);printf("\n");}LinkList Find(LinkList* L, DataType data){assert(L);if (*L == NULL){return NULL;}LinkList Cur = *L;while (Cur->next!=NULL){if (Cur->data== data){return Cur;}elseCur = Cur->next;}if (Cur->data == data){return Cur;}return Cur;}void PushBack(LinkList* L, DataType data){assert(L);LinkList Cur = *L;if (Cur== NULL){Cur = BuyNode(data);}while (Cur->next){ Cur = Cur->next;}Cur->next= BuyNode(data);}void PushFront(LinkList* L, DataType data){assert(L);LinkList Cur = *L;if (Cur == NULL){*L = BuyNode(data);}*L = BuyNode(data);(*L)->next = Cur;}void PopBack(LinkList*L){LinkList Cur = *L;LinkList Pre = NULL;assert(L);if (Cur->next == NULL || Cur == NULL)return NULL;while (Cur->next){Pre = Cur;Cur = Cur->next;}free(Pre->next);Pre->next = NULL;}void PopFront(LinkList* L){LinkList Cur = *L;assert(L);if (Cur->next==NULL||Cur==NULL)return NULL;*L=(*L)->next;free(Cur);}size_t Size(LinkList L){LinkList Cur = L;int count = 0;while (Cur->next){count++;Cur = Cur->next;}return count + 1;}void Erase(LinkList* L, LinkList pos){LinkList Cur = *L;LinkList Pre = NULL;assert(L);if (*L == NULL || pos == NULL)return;if (*L == pos)return NULL;while (Cur->next){Pre = Cur;Cur = Cur->next;if (Cur == pos){Pre->next = pos->next;break;}}}void Insert(LinkList pos, DataType data){LinkList NewNode = BuyNode(data);if (pos == NULL)return;NewNode->next = pos->next;pos->next = NewNode;}void Destroy(LinkList* L){LinkList Cur = NULL;if (*L == NULL)return NULL;while (*L){Cur = *L;*L = (*L)->next;free(Cur);}}
test.c#define _CRT_SECURE_NO_WARNINGS 1#include"Node.h"void test(){LinkList M = NULL;InitList(&M);PushFront(&M, 2);PushBack(&M, 3);PushBack(&M, 4);PushBack(&M, 5);PushBack(&M, 6);PushBack(&M, 7);PopBack(&M);PopFront(&M);Erase(&M, Find(&M,3));Insert(Find(&M,0), 3);printf("%d\n",Size(M));PrintList(M);Destroy(&M);}int main(){test();system("pause");return 0;}
阅读全文
0 0
- 单链表的初始化,删除,销毁,查找
- 单链表的创建、插入、删除、销毁以及查找中间结点
- 单链表的初始化,建立,插入,查找,删除。
- 单链表的初始化,建立,插入,查找,删除
- 单链表的初始化,建立,插入,查找,删除
- 单链表的初始化,建立,插入,查找,删除。
- 单链表的初始化,建立,插入,查找,删除
- 单链表的初始化,建立,插入,查找,删除。
- 单链表的初始化,建立,插入,查找,删除
- 单链表的初始化、建立、插入、查找、删除
- 单链表的初始化、插入、删除、查找
- 单链表的初始化、查找、删除、插入、释放
- 单向链表的操作:创建,删除,插入,销毁,查找
- 循环单链表的初始化,建立,插入,查找,删除
- 循环单链表的初始化,建立,插入,查找,删除
- 循环单链表的初始化,建立,插入,查找,删除。
- 双链表的初始化,建立,插入,查找,删除
- 双链表的初始化,建立,插入,查找,删除
- 关于日期计算的一些辅助函数
- 算法4中 1.4节示例中运行次数的讲解
- 玩转Python让人讨厌的编码问题
- 关于vue-cli安装问题
- 微信打开X5调试,使微信页面可以在谷歌浏览器调试
- 单链表的初始化,删除,销毁,查找
- Activity生命周期总结
- C#高性能大容量SOCKET并发(五):粘包、分包、解包
- D3D11的简单字体
- 好文章保存书签
- JS 时间戳转换成几天前
- Adnroid LearningNotes
- 关注程序性能(3) jvisualvm监视远程主机
- Android 5.1.1 时间同步方式