动手敲代码——链表(C语言实现)
来源:互联网 发布:qq空间推广淘宝 编辑:程序博客网 时间:2024/05/05 23:41
已经经过测试,放心可用。
刚刚想起,前几天看的一篇文章说,链表用递归实现更简介,没有当时很奇怪,但是也没有深究,文中是用java实现的。最近比较忙,等有空我也来试试。
/*链表的简单操作*/ #include <stdio.h>#include <stdlib.h>#define OK 1#define ERROR 0int num = 0;typedef struct Node{ int data; struct Node * next;}Node;typedef struct Node * LinkList;/*初始化链表,生成头结点*/ int InitList(LinkList * L){ *L = (LinkList)malloc(sizeof(Node)); if(*L == NULL) return ERROR; (*L)->next = NULL; return OK;} /*创建一个有n个节点的链表,尾插法*/ void CreatList(LinkList *L,int n){ LinkList p = NULL,q = NULL;// *L = (LinkList)malloc(sizeof(Node)); p = *L; while(n--) { q = (LinkList)malloc(sizeof(Node)); p->next = q; q->data = num++; p = q; } p->next = NULL; } /*在链表的第n个节点后插入一个节点*/void InsertNode(LinkList *L,int n){ LinkList p = NULL,q = NULL; q = (LinkList)malloc(sizeof(Node)); q->data = 100; p = (*L); while(n--) { p = p->next; } q->next = p->next; p->next = q;} /*删除第n个节点*/void DelectNode(LinkList *L ,int n){ LinkList p = NULL,q = NULL; p = *L; n--; while(n--) { p = p->next; } q = p; p = p->next; q->next = p->next; free(p); p = NULL;}/*将表置空*/void ClearList(LinkList *L){ LinkList p = NULL,q = NULL; p = (*L)->next; while(p->next != NULL) { q = p; free(p); p = NULL; p = q->next; } (*L)->next = NULL; } /*遍历链表*/void PrintList(LinkList L){ LinkList p = NULL; p = L->next; while(p->next != NULL) { printf(" %d ",p->data); p = p->next; } printf(" %d ",p->data);} int main(void){ LinkList L; InitList(&L); printf("\n创建链表\n"); CreatList(&L,10); PrintList(L); printf("\n插入\n"); InsertNode(&L,5); PrintList(L); printf("\n删除\n"); DelectNode(&L,6); PrintList(L); printf("\n清空链表\n"); ClearList(&L); PrintList(L);}
以下为测试
0 0
- 动手敲代码——链表(C语言实现)
- 动手敲代码——递归(汉诺塔问题)
- 动手敲代码——栈(经典问题练习)
- 动手写代码——基于Spark的TextRank实现
- C语言动手实现一个自己的HttP服务
- 从C的伪代码到汇编,动手实现objc_msgSend
- 动手实现Logistic Regression (c++)_实现
- 动手写C库——strcmp()
- 动手实现并开源IDEOnline——代码高亮【富文本编辑框】
- DataStructure---LinkList 链表C语言实现代码
- 万年历(C语言代码实现)
- 动手实现Logistic Regression (c++)_接口
- 动手实现Logistic Regression (c++)_测试
- 动手实现Logistic Regression (c++)_数据
- 动手实现Logistic Regression (c++)_测试_再次
- 编译器动手实践之:实现C语言函数定义的语法解析1
- C语言实现五子棋代码
- C语言代码实现 ls
- XSS跨站测试代码大全
- Codeforces 716 B Complete the Word【模拟】
- 64位Ubuntu kylin 16.04安装wine QQ
- oracle dual表
- 拓扑排序C++实现
- 动手敲代码——链表(C语言实现)
- Linux上有哪些好的终端模拟器?
- 关于C++关键字new
- 第4周项目3-单链表应用(3)
- impala-shell 启动报错
- 385. Mini Parser
- 前端笔试题--不断更新(答案来源网络,若有问题请指正)
- linux下安装redis
- 范式