数据结构学习——单链表ADT(程序化)
2015-03-22 21:41
381 查看
看了一点网上的代码,结合自己对链表的理解。将对链表常用的操作集合程序化如下:
#include<stdio.h> #include<stdlib.h> typedef struct Node { int Val; struct Node *next; }List; List *list_add(List **p,int Val);//此处是二级指针 void List_Print(List *p); List *list_insert(List **p,int Val,int i);//i为插入的位置 Val插入的值 List *list_remove(List **p,int i);//删除指定位置i的值 int main() { List *n=NULL; list_add(&n,0); list_add(&n,1); list_add(&n,2); list_add(&n,3); list_add(&n,4); list_insert(&n,5,3); list_insert(&n,6,2); list_remove(&n,2); list_remove(&n,3); List_Print(n); return 0; } List *list_remove(List **p,int i)//删除指定位置i的值 { int count=0; List *q,*a; a=*p; if(p==NULL) return NULL; for(count=0;count<(i-2);count++) { a=a->next; if(a==NULL) return NULL; } q=a->next;//后继元 a->next=q->next; return *p; } List *list_insert(List **p,int Val,int i) { int count=0; List *q,*a; a=*p; if(p==NULL) return NULL; for(count=0;count<(i-2);count++) { a=a->next; if(a==NULL) return NULL; } q=a->next;//后继元 List *temp=(List *)malloc(sizeof(List)); temp->next=q; temp->Val=Val; a->next=temp; return *p; } List *list_add(List **p,int Val)//此处是二级指针 { if(p==NULL) return NULL; List *temp=(List *)malloc(sizeof(List)); temp->next=*p; temp->Val=Val; *p=temp; //头指针移动到开始处 *P在此处的作用为头指针 return *p; } void List_Print(List *p) { if(p==NULL) printf("list is empty\n"); while(p) { printf("%d\t",p->Val); p=p->next; } }
相关文章推荐
- python数据结构学习笔记-2016-10-27-02-使用单链表实现包ADT
- 数据结构学习——二叉查找树ADT(程序化)
- 数据结构学习——散列表ADT(程序化)
- 数据结构学习——二叉堆ADT(程序化)
- python数据结构学习笔记-2016-11-05-01-队列ADT及其实现
- python数据结构学习笔记-2016-10-28-03-用链表实现多项式ADT
- 数据结构学习之单链表
- 数据结构学习(二)——单链表的操作之头插法和尾插法创建链表
- 数据结构学习笔记——单链表
- 算法设计和数据结构学习_6(单链表的递归逆序)
- python数据结构学习笔记-2016-11-20-01-直方图ADT
- [数据结构学习]单链表常用操作
- 算法设计和数据结构学习_6(单链表的递归逆序)
- 数据结构学习问题笔记之单链表
- 数据结构学习第一篇--C++实现单链表模板
- 数据结构学习笔记4——单链表的实现
- 数据结构学习(三)——单链表的操作之查找、删除、插入。
- 数据结构学习(二)——单链表的操作之头插法和尾插法创建链表
- 数据结构学习一(单链表的操作)
- 线性表之单链表学习小结(初学数据结构必看)