考研数据结构与算法----单链表的创建和读取(2)
2014-04-18 21:03
295 查看
接着今天中午的内容,还是那段代码,加入了链表的插入和删除还有整表删除,个人感觉单个元素的删除不太好;理解。
#include<stdio.h> #include<stdlib.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; 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,嗯 没别得了。
相关文章推荐
- 考研数据结构与算法----单链表的创建和读取(1)
- 数据结构----单链表的创建、插入、删除、读取、遍历
- 考研数据结构与算法之单链表多项式的计算(三)
- 考研数据结构与算法之单链表多项式的计算(二)
- 考研数据结构与算法之单链表多项式的计算(一)
- 单链表的定义,插入,删除,读取(二级指针,一级指针的应用)
- JAVA 创建TXT文件,写入文件内容,读取文件内容
- ASP.NET实现二维码(QRCode)的创建和读取实例
- ASP.NET实现二维码(QRCode)的创建和读取实例
- 创建xml并写入,读取xml内容
- C#-日期时间-轻松读取、改变文件的创建、修改、访问时间
- 创建单链表
- [002]链表笔记--编程实现一个单链表的创建/测长/打印
- node.js、js读取excel、操作excel、创建excel之js-xlsx.js
- 文件创建及读取的方法
- 考研数据结构与算法之利用堆栈实现行编辑程序
- 单链表的创建
- net9:图片变成二进制流存入XML文档,从XML文档中读出图片以及从XML文档中读取并创建图片文件
- json 读取数据创建表格
- Data Structure(1-4)---单链表的读取