数据结构之链表实现
来源:互联网 发布:c语言标识符命名规则 编辑:程序博客网 时间:2024/04/18 15:44
#include<stdio.h>#include<malloc.h>#include<stdlib.h>typedef struct node{int data;struct node * pNext;} * pNode,Node;pNode init();bool append(pNode pHead,int data);void show(pNode pHead);int length(pNode pHead);bool insert(pNode pHead,int data,int index);bool del(pNode pHead,int index);void main(){pNode pHead = init();int len = length(pHead);printf("%d\n",len);append(pHead,3);append(pHead,4);append(pHead,10);insert(pHead,555,1);show(pHead);del(pHead,1);int len2 = length(pHead);printf("%d\n",len2);;show(pHead);}pNode init()// 初始化一个有头结点的空链表。{pNode pHead = (pNode)malloc(sizeof(Node));if(NULL == pHead){exit(-1);}else{printf("初始化成功!\n");pHead->pNext = NULL;}return pHead;}bool append(pNode pHead,int data)//在链表尾部追加一个元素。{pNode p = pHead;while(p->pNext != NULL){p = p->pNext;}pNode pNew = (pNode)malloc(sizeof(Node));if(pNew != NULL){pNew->data = data;pNew->pNext = NULL;p->pNext = pNew;return true;}elsereturn false;}void show(pNode pHead)//打印链表{pNode p = pHead;p = p->pNext;while(p != NULL){printf("%d ",p->data);p = p->pNext;}printf("\n");}int length(pNode pHead)//返回链表长度{pNode p = pHead;int len = 0;p = p->pNext;while(NULL != p){p = p->pNext;len++;}return len;}bool insert(pNode pHead,int data,int index)//在链表Index位置插入一个元素data,当插入的元素位置大于长度时,返回失败。{pNode pNew = (pNode)malloc(sizeof(Node));pNode p = pHead;int count = 0;int len = length(pHead);if(index > len || index < 1){printf("插入序列号不正确\n");return false;}else{while(NULL!=pNew && count!=index-1){p = p->pNext;count++;}pNew->data = data;pNew->pNext = p->pNext;p->pNext = pNew;return true;}}bool del(pNode pHead,int index)//删除index位置的元素,当index大于链表的长度时,删除失败。{pNode p = pHead;int count = 0;int len = length(pHead);if(index > len||index< 1 ){printf("不存在该节点\n");return false;}else{while(count != index-1){p = p->pNext;count++;}pNode q = p->pNext;p->pNext = p->pNext->pNext;free(q);return true;}}
</pre><pre name="code" class="cpp">少了反转和返回删除的元素。。。下次在实现吧。。。。
0 0
- 数据结构之链表实现
- 数据结构之双向链表的实现
- 数据结构之单向链表实现
- 数据结构之双向链表实现
- 数据结构之链表的Java实现
- 数据结构之链表(C实现)
- 动手实现 数据结构 之 “单向链表”
- 动手实现 数据结构 之 “双向链表”
- 动手实现 数据结构 之 “十字链表”
- 动手实现 数据结构 之 “跳跃链表”
- 数据结构之栈的链表实现
- 数据结构之队列的链表实现
- 4.数据结构之通用链表实现
- 数据结构Java语言实现之链表
- Java数据结构之链表的实现
- 数据结构之链表Java实现
- 数据结构之链表go言语实现
- 数据结构之链表实现(通讯录)
- mysql出现权限问题无法创建新数据库&启动mysql失败问题,问题解决
- idea启动android项目时找不到已经运行的genymotion虚拟设备解决方案
- 遍历Map的四种方法
- uva 548 tree
- 星期二男孩问题
- 数据结构之链表实现
- 教你如何做个坏人----指令广播骚扰
- 小Y上学记——修学分(拓扑排序)
- 学习《算法导论》第十一章 散列表 总结一
- Hadoop压缩类型
- react-native试玩(16)-iOS分段控制控件
- c++ iterator(迭代器)分类及其使用
- CSS样式规范
- 犀牛——第9章类和模块 9.3JavaScript中java式的类继承