链表实现
来源:互联网 发布:sql组合主键 编辑:程序博客网 时间:2024/06/11 10:48
#include <stdio.h>
#include <stdlib.h>
//存储的数据的类型
typedef int elemtype;
//链表结构体
typedef struct Node{
elemtype num;
struct Node * next;
}Node0;
//链表指针
typedef Node0* linklist;
//链表初始化
int init(linklist *node)
{
//将头指针指向NULL
*node=NULL;
return 0;
}
//计算链表长度
int count_length(linklist node)
{
linklist temp;
int length=0;
for(temp=node;temp!=NULL;temp=temp->next)
length++;
return length;
}
//查找对应元素的链表指针
linklist* search(linklist node,elemtype num)
{
linklist *temp;
if(node==NULL)
return NULL;
for(*temp=node;(*temp)->next!=NULL;(*temp)=(*temp)->next)
if((*temp)->num==num)
return temp;
return NULL;
}
//从链表尾部插入节点
int insert(linklist *node,elemtype num)
{
linklist temp,temp0;
temp0=(linklist)malloc(sizeof(Node0));
temp0->num=num;
temp0->next=NULL;
if(*node==NULL)
{
*node=temp0;
return 0;
}
for(temp=*node;temp->next!=NULL;temp=temp->next);
temp->next=temp0;
return 0;
}
//删除对应节点
int delete(linklist *node,elemtype num)
{
linklist temp,temp0;
for(temp=*node;temp!=NULL;temp=temp->next)
{
if(temp->num==num)
{
temp0->next=temp->next;
return 0;
}
temp0=temp;
}
return -1;
}
//遍历并打印整个链表
int show(linklist node)
{
linklist temp;
if(node==NULL)
return -1;
for(temp=node;temp!=NULL;temp=temp->next)
printf("%d\n",temp->num);
return 0;
}
int main()
{
linklist node;
init(&node);
show(node);
insert(&node,20);
show(node);
insert(&node,10);
show(node);
insert(&node,30);
show(node);
insert(&node,40);
show(node);
printf("%d\n",count_length(node));
// printf("%d\n",(*search(node,10))->num);
delete(&node,10);
show(node);
printf("%d\n",(*search(node,30))->num);
return 0;
}
- Java栈实现:数组实现和链表实现
- C++实现队列--数组实现和链表实现
- C++实现队列--数组实现和链表实现
- 队列的实现--链表实现
- Josephus排列-红黑树实现-链表实现
- 实现循环链表(js实现)
- 链表实现队列 C++实现
- 栈实现队列,链表实现栈
- stack 底层简单实现 链表实现
- Java实现 链表实现队列
- 栈模型的实现--链表实现
- 链表的实现
- C#实现链表
- 实现双向链表
- JAVA实现链表
- 双向链表实现
- Java实现链表
- 链表实现
- (C#)检索出一个字符串中某字符第n次出现的位置(IndexOf)
- 参考苹果对方法的命名的规范
- 主数据管理功能模块、实施、提供厂商
- “Incorrect Architecture” when trying to install iPhone app onto my development device
- android 优化内存溢出之三
- 链表实现
- MBProgressHUD的使用---图像及动画处理三:WaitingBar
- 重力感应
- A*B Problem
- freopen重定向函数
- Spring事务配置的五种方式
- 收集的一些前端Bug概要。先记上一笔!(一)
- json对象转换成对象
- 使用 Lock 与Condition 实现生产者消费者