单链表一直是程序员的基础,我也来复习下,下面是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 ;
}

最新文章

  1. apk反编译工具
  2. NCBI database download
  3. MyBatis中#,$的用法区别
  4. ios下划线变量:为什么变量前要加下划线才有用?
  5. 【策略】HDOJ-1205-吃糖果
  6. 进程通信之一 使用WM_COPYDATA C++及C#实现(转)
  7. ME21N/ME22N/ME23N屏幕增强BADI ME_GUI_PO_CUST
  8. 17_高级映射:一对一查询(使用resultType)
  9. windows中使用Git工具连接GitHub(配置篇)
  10. ImageMagick 转换 progressive jpeg
  11. Redmine(Ruby)配置经验
  12. (函数封装)获取class名称
  13. ARM非对齐操作异常解决过程
  14. Spring Security(三十四):10.4 Jackson Support
  15. JS函数可以再添加属性(包括方法)
  16. 关于新学期Python的一点见解
  17. websocket 的客户端 websocket-sharp
  18. (纪录片)电的故事 Shock &amp; Awe The Story of Electricity
  19. C#基础第六天-作业-利用面向对象的思想去实现名片
  20. lazy初始化和线程安全的单例模式

热门文章

  1. Toolkit.getImage获取图片
  2. Github 笔记
  3. Android——配置文件的保存SharedPreferences进行数据存储
  4. [原创]cocos2d-x研习录-第一阶 背景介绍 之 cocos2d-x特点
  5. error LNK2005: _DllMain@12 已经在 dllmain.obj 中定义
  6. C语言中 *.c和*.h文件的区别!
  7. IIS:日志代码分析
  8. POJ2411
  9. FC 坦克大战 老巢铁墙
  10. [HTML] CSS 渐变