线性表的链式存储及相关操作 C语言版
2011-08-30 17:20
204 查看
/* 线性表的链式存储实现及相关操作 C语言版本 作者:Shmily 日期:2011年8月30日 编译环境 VC++6.0 带头结点的单链表,结点的下标从1开始 */ /**************************************************/ #include <stdio.h> #include <stdlib.h> #include <malloc.h> /**************************************************/ #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 typedef int Status; typedef int ElemType; /**************************************************/ typedef struct node{ ElemType data; //数据域 struct node *next; //指针域 }Node, *pNode; /**************************************************/ //创建一个带头结点的空的单链表 pNode CreateListHead(void) { pNode L = (pNode)malloc(sizeof(Node)); if (!L) exit (-1); L->next = NULL; return L; } /**************************************************/ //输出单链表 void DisLinkList(pNode L) { pNode p = L->next; while (p) { printf("%d ", p->data); p = p->next; } } /**************************************************/ //求单链表的长度 int ListLength(pNode L) { pNode p = L->next; int k=0; while (p) { p = p->next; ++k; } return k; } /**************************************************/ //取得链表中第pos个结点的值并存入e中 Status GetElem(pNode L, int pos, ElemType *e) { pNode p=L->next; int i=1; while (p && i<pos) { p = p->next; ++i; } if (!p || i>pos) return ERROR; *e = p->data; return OK; } /**************************************************/ //在链表中的第pos个位置插入一个值为e的结点 Status ListInsert(pNode L, int pos, ElemType e) { pNode p = L; pNode pNew; int i=1; while (p && i<pos) { p = p->next; ++i; } if (!p || i>pos) return ERROR; pNew = (pNode)malloc(sizeof(Node)); pNew->data = e; pNew->next = p->next; p->next = pNew; return OK; } /**************************************************/ //删除链表L中的第pos个结点并将该结点的值存入e中 Status ListDelete(pNode L, int pos, ElemType *e) { pNode p = L; pNode q; int i=1; while (p->next && i<pos) { p = p->next; ++i; } if (!(p->next) || i>pos) return ERROR; q = p->next; p->next = q->next; *e = q->data; free(q); return OK; } /**************************************************/ int main(void) { pNode L; ElemType e; int pos=7; L = CreateListHead(L); return 0; } /**************************************************/
相关文章推荐
- 线性表之链式存储结构_单链表相关算法
- 线性表的链式存储及相关操作
- 数据结构:线性表的链式存储(单向链表)--Java实现
- 艾伟_转载:C#版数据结构之--线性表的链式存储(单链表)
- 线性表的顺序存储和链式存储差异
- 线性表的链式存储结构之单链表类的实现之补充_Java
- 队列的线性存储和链式存储实现
- 【Data_Structure笔记2】线性表的链式存储【单链表】
- 线性表链式存储(单链表)及其15种操作的实现
- [学习笔记]线性表的链式存储
- 线性表的链式存储(单链表)C语言实现
- 树型结构数据在关系数据库中用链式存储相关查询实现
- 线性表的顺序存储和链式存储的实现(C)
- 线性表的链式存储实现(有头结点)
- 线性表的链式存储方式
- 数据结构——线性表的链式存储
- 线性表(顺序存储/链式存储)
- 线性表的链式存储
- 线性表的链式存储
- 线性表之链式存储