linux C学习笔记03--单链表
2015-05-29 11:02
288 查看
单链表一直是程序员的基础,我也来复习下,下面是link.c中的代码,供main.c 调用,代码很简单,单链表的插入,删除,查找和遍历输出,
接着是main.c:
#include <stdio.h> #include <stdlib.h> typedef struct link{ int data; struct link* next; }*LINK; int insert_link(LINK* head,int data); int print(LINK head); int delete_node(LINK *head,int n); int find_node(LINK head,int n); int insert_link(LINK* head,int data) { LINK node = (LINK)malloc(sizeof(struct link)); LINK tmp = NULL; if(node != NULL) { node->data = data; node->next = NULL; } else { printf("malloc new node error!\n"); return -1; } if(*head == NULL) { *head = node; return 0; } tmp = *head; while(tmp->next != NULL) //find ending node { tmp = tmp->next; } tmp->next = node; return 0; } int print(LINK head) { LINK tmp = head; while(tmp != NULL) { printf("%d \n",tmp->data); tmp = tmp->next; } return 0; } int delete_node(LINK *head,int n) //delete the node of index is n { LINK tmp = *head; LINK save = tmp; int i = 0; if(n == 1) { tmp = tmp->next; free(save); *head = tmp; return 0; } while(tmp != NULL) { if(i == n-1) { save->next = tmp->next; free(tmp); break; } save = tmp; tmp = tmp->next; i++; } if(n-1 > i) { printf("error: delete %d is out of length\n",n); return -1; } return 0; } int find_node(LINK head,int n) { LINK tmp = head; int data = 0; int i = 0; while(tmp != NULL) { if(i == n-1) { data = tmp->data; break; } tmp = tmp->next; i++; } if(n-1 > i) { printf("find_node error: out of link length\n"); return -1; } return data; }
接着是main.c:
#include <stdio.h> #include <stdlib.h> typedef struct link{ int data; struct link* next; }*LINK; extern int insert_link(LINK* head,int data); extern int print(LINK head); extern int delete_node(LINK *head,int n); extern int find_node(LINK head,int n); int main(int argc,char* argv[]) { LINK phead = NULL; insert_link(&phead,1); insert_link(&phead,2); insert_link(&phead,3); insert_link(&phead,4); insert_link(&phead,5); insert_link(&phead,6); print(phead); delete_node(&phead,1); //delete the node by index print(phead); delete_node(&phead,2); //delete the node by index print(phead); delete_node(&phead,1); //delete the node by index print(phead); printf("find node 6 is %d\n",find_node(phead,6)); //finding the node by index return 0; }
相关文章推荐
- Xmanager连接Linux 5.8配置
- linux sort,uniq,cut,wc命令详解
- linux suse升级到4.8.2
- linux中mysql命令方式备份数据的问题
- Linux FTP服务器-VSFTPD虚拟用户配置
- Linux Top 命令解析
- linux dmesg命令使用
- Linux commands
- Centos下设置程序开机自动启动命令介绍
- ubuntu64位安装ARM-linux-gcc
- linux配置IP的方法
- Linux NFS服务器的安装与配置
- Linux 驱动之内核空间分配内存
- 【点滴】LINUX之grep命令
- linux驱动程序中的异步编程
- Linux 生成指定大小文件命令 dd
- (转)linux screen 命令详解
- 10 程序员必备:Linux日常维护命令
- Linux sed命令
- 查看linux版本信息