线性表的链式表示和实现
来源:互联网 发布:微店跟淘宝有什么区别 编辑:程序博客网 时间:2024/05/17 23:18
线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素。(这些存储单元可以是连续的,也可以是不连续的)
下面直接看实现代码,代码只实现了创建,插入和删除:
//// main.c// 001-线性表的链式表示和实现//#include <stdio.h>#include <stdlib.h>typedef char ElemType;//线性表的单链表存储结构typedef struct LNode{ ElemType data; struct LNode * next;}LNode, *LinkList;int createList(LinkList * L, ElemType * elems, int length){ *L = (LinkList)malloc(sizeof(LNode)); (*L)->next = NULL; for (int i = 0; i < length; i++) { LinkList p = (LinkList)malloc(sizeof(LNode)); p->next = (*L)->next; (*L)->next = p; //每个元素都插入到表头 p->data = elems[i]; } return 1;}int insertList(LinkList * L, ElemType elem, int i){ //在带头结点的单链线性表L中第i个位置之前插入元素elem LinkList p = * L; int j = 0; while (p && j < i-1) { //不能在头结点之前插入,故i>1 p = p->next; j++; } if (!p || j > i-1) { //此时到了链表末尾 return 0; } LinkList s = (LinkList)malloc(sizeof(LNode)); s->data = elem; s->next = p->next; p->next = s; return 1;}//删除第i个元素int deleteList(LinkList * L, int i, ElemType * elem){ LinkList p = *L; int j = 0; while (p && j < i-1) { //寻找第i个节点,令p只想其前驱 p = p->next; j++; } if (!(p->next) || j > i-1) { return 0; } LinkList q = p->next; //q就是需要删除的结点 p->next = q->next; *elem = q->data; free(q); return 1;}int main(int argc, const char * argv[]) { // insert code here... printf("Hello, World!\n"); ElemType elems[10] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'}; LinkList L; createList(&L, elems, 10); for (int i = 0; i < 5; i++) { insertList(&L, 'k'+i, 3); } ElemType elem; deleteList(&L, 10, &elem); printf("删除的元素是:%c\n", elem); LinkList find = L; while (find->next != NULL) { find = find->next; printf("%c\n", find->data); } return 0;}输出:
Hello, World!删除的元素是:fjionmlkhgedcbaProgram ended with exit code: 0
0 0
- 线性表的链式表示和实现
- 线性表的链式表示和实现
- 线性表的链式表示和实现
- 线性表的链式表示和实现
- 线性表的链式表示和实现
- 线性表的链式表示和实现
- 线性表的链式表示和实现
- 线性表的链式表示和实现
- 线性表的链式表示和实现
- 线性表的链式表示和实现
- 线性表的链式表示和实现
- 线性表的链式表示和实现
- 线性表的链式表示和实现
- 线性表的链式表示和实现
- 线性表的链式表示和实现
- 线性表的链式表示和实现(链式)
- 线性表的链式表示和实现----线性(单)链表
- 线性表得链式表示和实现
- centos6.5远程桌面连接
- Activity+Viewpager 延迟加载
- C++ 类模板不能实现分离式编译
- 如何解决电脑ip地址冲突的问题
- C++命名空间namespace
- 线性表的链式表示和实现
- 晓月_【关于UI】
- 使用phpQuery轻松采集网页内容
- android 手势应用之我的第一个Demo APP
- swing登陆程序的异步loading效果,避免程序假死状态?swing 后台操作事件长 , 界面如何显示正在等待?
- HDU 5592(ZYB's Premutation-线段树)
- postgresql 9.3 自定义聚合函数实现多行数据合并成一列
- 悬浮窗口和利用服务实现流氓广告弹窗
- 自定义国际化标签