考研数据结构与算法----单链表的创建和读取(2)
来源:互联网 发布:工厂erp系统源码 编辑:程序博客网 时间:2024/05/24 03:49
接着今天中午的内容,还是那段代码,加入了链表的插入和删除还有整表删除,个人感觉单个元素的删除不太好;理解。
#include<stdio.h>#include<stdlib.h>#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0typedef int Status;typedef int ElemType;typedef struct Node{ ElemType data; struct Node *next;}Node;typedef struct Node *LinkList;Status GetElem(LinkList L, int i, ElemType *e);Status ListInsert(LinkList *L, int i, ElemType e);Status ListDelete(LinkList *L, int i, ElemType *e);Status InitList(LinkList *L, int n);Status FreeList(LinkList *L);void ShowList(LinkList L);int main(void){ LinkList myList; InitList(&myList, 9); ElemType t; GetElem(myList, 1, &t); printf("%d",t); printf("\n"); ShowList(myList); ListInsert(&myList, 3, 99); ShowList(myList);ListDelete(&myList, 10, &t);ShowList(myList);FreeList(&myList); system("pause");}Status GetElem(LinkList L, int i, ElemType *e){ int j = 1; LinkList p; p = L->next; while(p && j<i) { p = p->next; j++; } if(!p || j>i) { return ERROR; } *e = p->data; return OK;}Status ListInsert(LinkList *L, int i, ElemType e){ int j = 1; LinkList p,s; p = *L; while(p&&j<i) { p = p->next; j++; } if(!p||j>i) { return ERROR; } s = (LinkList)malloc(sizeof(Node)); s->data = e; s->next = p->next; p->next = s; return OK;}Status InitList(LinkList *L, int n){ LinkList p,r; int i; *L =(Node *)malloc(sizeof(Node)); r = *L; for(i=0; i<=n; i++) { p = (Node*)malloc(sizeof(Node)); p->data = i+1; r->next = p; r = p; } r->next = NULL; return OK;}void ShowList(LinkList L){ LinkList p; p = L->next; while(p->next) { printf("%d\t", p->data); p = p->next; }printf("\n");}Status ListDelete(LinkList *L, int i, ElemType *e){ LinkList p,s;p = *L;int j = 1;while(j<i && p->next){p = p->next;j++;}if( (!p->next) || j>i )return ERROR;s = p->next;p->next = s->next;*e = s->data;free(s);return OK;}Status FreeList(LinkList *L){LinkList p,q;p = (*L)->next;while(p){q = p->next;free(p);p = q;}(*L)->next = NULL;return OK;}PS:CodeBlocs实在是用不惯,换回了VS 10,嗯 没别得了。
0 0
- 考研数据结构与算法----单链表的创建和读取(2)
- 考研数据结构与算法----单链表的创建和读取(1)
- 考研数据结构与算法之树的生成和遍历(2)
- 考研数据结构与算法之树的生成(1)
- 考研数据结构与算法之单链表多项式的计算(一)
- 考研数据结构与算法之单链表多项式的计算(二)
- 考研数据结构与算法之单链表多项式的计算(三)
- 考研数据结构与算法(3)----有头节点和尾节点的链表
- 考研数据结构与算法(4)----有头节点和尾节点的链表
- 考研数据结构与算法之堆栈的建立与使用(一)
- (考研)数据结构及算法
- 考研数据结构与算法之堆栈的使用(三)数组实现的堆栈
- 考研数据结构与算法之堆栈的使用(四)链表实现的堆栈
- 考研数据结构与算法之堆栈的使用(二)利用堆栈实现进制转换
- 考研数据结构与算法之堆栈的使用(三)利用堆栈匹配括号
- 《新编数据结构算法考研指导 》的说明
- 单链表的创建 头插法 Java数据结构与算法
- C++数据结构与算法------------二叉树的2种创建
- AIX系统--常用命令
- Pascal's Triangle II
- Android开发之通过ContentObserver窃听用户发出的短信
- mtk驱动总结
- IOS中Json解析的四种方法
- 考研数据结构与算法----单链表的创建和读取(2)
- Q-learning
- Mysql集群
- 又在起点
- windows下Eclipse+MinGW+Qt+c++配置安装解决方法
- 二叉查询树
- MPQ Storm库 源码分析 一
- 第六周作业1——利用哈夫曼编码英文字母表
- (二)第一个简单的程序-HelloWorld