linklist 链表的实现
来源:互联网 发布:win7网络图标有个红叉 编辑:程序博客网 时间:2024/06/05 18:57
#include <stdio.h>
#include <stdlib.h>
typedef struct _link_node_{
int data;
struct _link_node_ *next;
}LinkNode;
LinkNode *creat_linklist(void);
LinkNode *creat_linknode(int value);
int insert_linklist(LinkNode *head, int value);
int show_linklist(LinkNode *head);
//int search_linklist(LinkNode *head, int value);
LinkNode *search_linklist(LinkNode *head, int value);
int modify_linklist(LinkNode *head, int obj, int value);
int delet_linklist(LinkNode *head, int obj);
int free_linklist(LinkNode *head);
int main()
{
LinkNode *head = NULL;
LinkNode *locate = NULL;
head = creat_linklist();
insert_linklist(head, 100);
insert_linklist(head, 200);
locate = search_linklist(head, 1000);
if(locate)
printf("locate: %d\n", locate->data);
modify_linklist(head, 1000, 1000);
show_linklist(head);
delet_linklist(head, 200);
show_linklist(head);
free_linklist(head);
return 0;
}
LinkNode *creat_linknode(int value)
{
LinkNode *node = NULL;
node = (LinkNode *)malloc(sizeof(LinkNode));
node->data = value;
node->next = NULL;
return node;
}
LinkNode *creat_linklist(void)
{
return creat_linknode(0);
}
int insert_linklist(LinkNode *head, int value)
{
LinkNode *node = NULL;
node = creat_linknode(value);
node->next = head->next;
head->next = node;
return 0;
}
int show_linklist(LinkNode *head)
{
LinkNode *p = head->next;
while(NULL != p)
{
printf("%3d ", p->data);
p = p->next;
}
putchar('\n');
return 0;
}
#if 0
int search_linklist(LinkNode *head, int value)
{
int nu = 1;
LinkNode *p = head->next;
while(NULL != p)
{
if(p->data == value)
return nu;
nu ++;
p = p->next;
}
return -1;
}
#else
LinkNode *search_linklist(LinkNode *head, int value)
{
LinkNode *p = head->next;
while(NULL != p)
{
if(p->data == value)
return p;
p = p->next;
}
return NULL;
}
#endif
int modify_linklist(LinkNode *head, int obj, int value)
{
LinkNode *locate = NULL;
locate = search_linklist(head, obj);
if(NULL == locate)
return -1;
locate->data = value;
return 0;
}
int delet_linklist(LinkNode *head, int obj)
{
LinkNode *p = head;
LinkNode *tmp = NULL;
while(NULL != p->next && p->next->data != obj)
p = p->next;
if(NULL == p->next)
return -1;
tmp = p->next;
p->next = tmp->next;
free(tmp);
return 0;
}
int free_linklist(LinkNode *head)
{
LinkNode *tmp = NULL,
*p = head;
while(NULL != p)
{
tmp = p;
p = p->next;
free(tmp);
}
return 0;
}
#include <stdlib.h>
typedef struct _link_node_{
int data;
struct _link_node_ *next;
}LinkNode;
LinkNode *creat_linklist(void);
LinkNode *creat_linknode(int value);
int insert_linklist(LinkNode *head, int value);
int show_linklist(LinkNode *head);
//int search_linklist(LinkNode *head, int value);
LinkNode *search_linklist(LinkNode *head, int value);
int modify_linklist(LinkNode *head, int obj, int value);
int delet_linklist(LinkNode *head, int obj);
int free_linklist(LinkNode *head);
int main()
{
LinkNode *head = NULL;
LinkNode *locate = NULL;
head = creat_linklist();
insert_linklist(head, 100);
insert_linklist(head, 200);
locate = search_linklist(head, 1000);
if(locate)
printf("locate: %d\n", locate->data);
modify_linklist(head, 1000, 1000);
show_linklist(head);
delet_linklist(head, 200);
show_linklist(head);
free_linklist(head);
return 0;
}
LinkNode *creat_linknode(int value)
{
LinkNode *node = NULL;
node = (LinkNode *)malloc(sizeof(LinkNode));
node->data = value;
node->next = NULL;
return node;
}
LinkNode *creat_linklist(void)
{
return creat_linknode(0);
}
int insert_linklist(LinkNode *head, int value)
{
LinkNode *node = NULL;
node = creat_linknode(value);
node->next = head->next;
head->next = node;
return 0;
}
int show_linklist(LinkNode *head)
{
LinkNode *p = head->next;
while(NULL != p)
{
printf("%3d ", p->data);
p = p->next;
}
putchar('\n');
return 0;
}
#if 0
int search_linklist(LinkNode *head, int value)
{
int nu = 1;
LinkNode *p = head->next;
while(NULL != p)
{
if(p->data == value)
return nu;
nu ++;
p = p->next;
}
return -1;
}
#else
LinkNode *search_linklist(LinkNode *head, int value)
{
LinkNode *p = head->next;
while(NULL != p)
{
if(p->data == value)
return p;
p = p->next;
}
return NULL;
}
#endif
int modify_linklist(LinkNode *head, int obj, int value)
{
LinkNode *locate = NULL;
locate = search_linklist(head, obj);
if(NULL == locate)
return -1;
locate->data = value;
return 0;
}
int delet_linklist(LinkNode *head, int obj)
{
LinkNode *p = head;
LinkNode *tmp = NULL;
while(NULL != p->next && p->next->data != obj)
p = p->next;
if(NULL == p->next)
return -1;
tmp = p->next;
p->next = tmp->next;
free(tmp);
return 0;
}
int free_linklist(LinkNode *head)
{
LinkNode *tmp = NULL,
*p = head;
while(NULL != p)
{
tmp = p;
p = p->next;
free(tmp);
}
return 0;
}
- linklist 链表的实现
- C++实现的链表,LinkList
- 链表的链性表的c语言实现方式 linklist.h 和 linklist.c
- C 类LinkList实现线性链表的一般操作
- LinkList模板的实现
- LinkList 单链表的实现
- C++链表实现堆栈:LinkList:Build a linklist using C++ class Stack
- LinkList的一个简单实现
- LinkList链表操作
- 链表插入排序:LinkList:Sort a LinkList(insert directly)
- JAVA类库LinkList的基本实现
- reverse linklist 反转链表的一部分 python
- 线性表之<链表linklist>的储存及插入、删除-C代码实现
- 线性表的链式存储(LinkList)
- 链表LinkList.c实现
- 数据结构封装之《LinkList单向链表》
- 数据结构封装之《LinkList单向链表》
- LinkList的新建,插入,删除等的实现
- Qt之对话框设计——利用QPalette改变控件颜色
- 用opencv改变图片大小(像素、尺寸)
- JAVA的类加载机制
- goautodial 安装配置
- OC 将字典写入数组 并将数组写入文件 对文件内容操作
- linklist 链表的实现
- UIKit和Core Graphics绘图——绘制光泽,仿射变换与矩阵变换
- java 对象序列化的两种方法
- UBOOT LCD驱动流程
- jquery笔记
- hql不会加载关联对象
- 机器学习经典算法12-SVD及其在推荐中的应用
- 几种web app性能对比(jsp/mojo/ngx_perl/ngx_lua/plack/twiggy)
- 程序员的十楼层。看看自己在第几层。很有意思的文章!绝对给力!