linux C学习笔记03--单链表
2024-09-04 02:08:58
单链表一直是程序员的基础,我也来复习下,下面是link.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 -;
} if(*head == NULL)
{
*head = node;
return ;
} tmp = *head;
while(tmp->next != NULL) //find ending node
{
tmp = tmp->next;
}
tmp->next = node; return ;
} int print(LINK head)
{
LINK tmp = head;
while(tmp != NULL)
{
printf("%d \n",tmp->data);
tmp = tmp->next;
} return ;
} int delete_node(LINK *head,int n) //delete the node of index is n
{
LINK tmp = *head;
LINK save = tmp;
int i = ; if(n == )
{
tmp = tmp->next;
free(save);
*head = tmp;
return ;
} while(tmp != NULL)
{
if(i == n-)
{
save->next = tmp->next;
free(tmp);
break;
} save = tmp;
tmp = tmp->next;
i++;
} if(n- > i)
{
printf("error: delete %d is out of length\n",n);
return -;
} return ;
} int find_node(LINK head,int n)
{
LINK tmp = head;
int data = ;
int i = ; while(tmp != NULL)
{
if(i == n-)
{
data = tmp->data;
break;
}
tmp = tmp->next;
i++;
} if(n-1 > i)
{
printf("find_node error: out of link length\n");
return -;
} 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,);
insert_link(&phead,);
insert_link(&phead,);
insert_link(&phead,);
insert_link(&phead,);
insert_link(&phead,); print(phead);
delete_node(&phead,); //delete the node by index
print(phead);
delete_node(&phead,); //delete the node by index
print(phead);
delete_node(&phead,); //delete the node by index
print(phead); printf("find node 6 is %d\n",find_node(phead,)); //finding the node by index return ;
}
最新文章
- apk反编译工具
- NCBI database download
- MyBatis中#,$的用法区别
- ios下划线变量:为什么变量前要加下划线才有用?
- 【策略】HDOJ-1205-吃糖果
- 进程通信之一 使用WM_COPYDATA C++及C#实现(转)
- ME21N/ME22N/ME23N屏幕增强BADI ME_GUI_PO_CUST
- 17_高级映射:一对一查询(使用resultType)
- windows中使用Git工具连接GitHub(配置篇)
- ImageMagick 转换 progressive jpeg
- Redmine(Ruby)配置经验
- (函数封装)获取class名称
- ARM非对齐操作异常解决过程
- Spring Security(三十四):10.4 Jackson Support
- JS函数可以再添加属性(包括方法)
- 关于新学期Python的一点见解
- websocket 的客户端 websocket-sharp
- (纪录片)电的故事 Shock &; Awe The Story of Electricity
- C#基础第六天-作业-利用面向对象的思想去实现名片
- lazy初始化和线程安全的单例模式
热门文章
- Toolkit.getImage获取图片
- Github 笔记
- Android——配置文件的保存SharedPreferences进行数据存储
- [原创]cocos2d-x研习录-第一阶 背景介绍 之 cocos2d-x特点
- error LNK2005: _DllMain@12 已经在 dllmain.obj 中定义
- C语言中 *.c和*.h文件的区别!
- IIS:日志代码分析
- POJ2411
- FC 坦克大战 老巢铁墙
- [HTML] CSS 渐变