简单的单链表链表实现 不足之处请留言指出。
来源:互联网 发布:猝死 知乎 编辑:程序博客网 时间:2024/06/07 07:14
以下是头文件:
#pragma once#ifndef __LIST_H__#define __LIST_H__#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <assert.h>#include <memory.h> #endif
以下是代码实现:
#include "list.h"typedef int ElemType;typedef struct node{ //节点ElemType elem;struct node* next;}node,*pNode;typedef struct { //链表pNode head, tail; //头、尾、指向下一个的节点指针int len; //长度}LinkList,*PlinkList;enum { ERROR, OK }; //0 1PlinkList initList(); //申请头节点int clearList(LinkList* L); //清空int destroyLIst(LinkList* L); //销毁int insFirst(LinkList* L, ElemType e); //头插int insEnd(LinkList* L, ElemType e); //尾插int insDelete(LinkList* L); //头删int locateElem(const LinkList* L, ElemType e); //查询e出现的第一个位置int deleteELem(LinkList* L, ElemType e); //删除第一个出现的eint isEmpty(const LinkList* L); //判空void printList(const LinkList* L);//打印int lenList(const LinkList* L); //长度void test4();//int main()//{//printf("------------------单链表测试------------------\n");//test4();////int i = 43;//printf("%d\n", printf("%d", printf("%d", i)));////system("pause");//return 0;//}void test4(){PlinkList list = initList();printf("%d\n", list->head->elem);printf("%p\n", list->head->next);printf("%p\n", list->head);printf("%p\n", list->tail);printf("%p\n", list->tail->next);printf("%p\n", list);printf("%d\n", isEmpty(list));insFirst(list, 1); insFirst(list, 2); insFirst(list, 3);insEnd(list, 1); insEnd(list, 222); insEnd(list, 222);printList(list);deleteELem(list, 222);printList(list);printf("%d\n", locateElem(list, 222));insDelete(list);printList(list);printf("len:%d\n", lenList(list));clearList(list);printList(list);printf("%d\n", destroyLIst(list));}PlinkList initList() //申请头节点{LinkList* L;L = (PlinkList)malloc(sizeof(LinkList));L->head = (node*)malloc(sizeof(node));L->tail = (node*)malloc(sizeof(node));L->head->next = NULL;L->tail->next = NULL;L->head->elem = 0;L->tail->elem = 0;L->len = 0;return L;}int clearList(LinkList* L){assert(L);pNode temp = NULL;pNode p = L->head->next;while (p != NULL){temp = p->next;free(p);p = temp;}L->head->next = NULL;L->tail->next = NULL;L->len = 0;return OK;}int destroyLIst(LinkList* L){assert(L);//删除链表L中除了头节点之外的所有节点clearList(L);free(L);L = NULL;return OK;}int insFirst(LinkList* L, ElemType e) //头插{assert(L);pNode temp = (pNode)malloc(sizeof(node));temp->elem = e;if (L->head->next == NULL){L->tail = temp;}temp->next = L->head->next;L->head->next = temp;L->len++;return OK;}int insEnd(LinkList* L, ElemType e) //尾插{assert(L);pNode temp = (pNode)malloc(sizeof(node));temp->elem = e;if (L->head->next == NULL){L->head = temp;}L->tail->next = temp;temp->next = NULL;L->tail = temp;L->len++;return OK;}int insDelete(LinkList* L) //头删{assert(L);pNode temp = L->head->next->next;free(L->head->next);L->head->next = temp;L->len--;return OK;}int locateElem(const LinkList* L, ElemType e){assert(L);int i = 0;pNode p = L->head->next;while (p != NULL){++i;if (p->elem == e){return i;}p = p->next;}return ERROR;}int deleteELem(LinkList* L, ElemType e) //删除第一个出现的e{assert(L);pNode p = L->head->next;pNode temp = L->head; //记录p的前驱while (p != NULL){if (p->elem == e){temp->next = p->next;free(p);L->len--;return OK;}p = p->next;temp = temp->next;}return ERROR;}int isEmpty(const LinkList* L){assert(L);if (L->head->next == L->tail->next){return 1;}return 0;}void printList(const LinkList* L){assert(L);pNode p = L->head->next;while (p != NULL){printf("%d ", p->elem);p = p->next;}printf("\n");}int lenList(const LinkList* L){assert(L);return L->len;}
阅读全文
0 0
- 简单的单链表链表实现 不足之处请留言指出。
- 简单的动态顺序表实现 不足之处请留言指出
- 简单的双链表实现 不足之处请留言指出。
- 简单的循环队列实现 不足之处请留言指出
- 简单的顺序栈实现 不足之处请留言指出
- 简单的银行系统实现,新手上路,不足之处请见谅
- 双向链表链表的实现
- 单链表链式结构的创建
- 自己写的一种仿qq留言,评论的简单实现方式。请多指教
- 请指出GAC的含义
- C#+三层+会员管理系统源码供大家学习参考,有不足之处还请指出
- 线性表链接实现--双循环链表
- 伸展树的实现qt,会的请截图留言
- 线性表链表实现
- 单链表链式存储结构的读取
- 一个简单留言本的实现
- 一个简单留言本的实现
- Go语言实现简单的留言本
- 算法0-介绍
- boa服务器移植详解
- 数据库三大范式学习理解
- TCP/IP基础知识
- spring boot打包问题,访问问题
- 简单的单链表链表实现 不足之处请留言指出。
- HTTP1.X HTTPS SSL HTTP2.0
- RabbitMQ实践--安装、JAVA客户端操作
- Java设计模式——模板方法模式
- 中国剩余定理
- 设计模式解密(23)
- IMusicPlayer网络音乐播放器_协议分析(二)
- XML解析(三):JDOM解析
- 解决office预览问题,jaboc,iText的运用