C语言链表的创建、插入、查找、删除、清空操作
来源:互联网 发布:java多泛型转换 编辑:程序博客网 时间:2024/05/17 22:07
#include "list.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//创建头结点
Node* create_phead()
{
Node *phead=(Node*)malloc(sizeof(Node));
phead->next=NULL;
return phead;
}
//在末尾添加一个元素
void add_node(Node* phead,int d)
{
Node* p=(Node*)malloc(sizeof(Node));
p->data=d;
p->next=NULL;
Node*q=phead;
while(q->next!=NULL)
{
q=q->next;
}
q->next=p;
}
//getData –查找第n个元素的值
int getData(Node *phead,int n)
{
int i=0;
if(n<1) return 0;
Node *p=phead;
while(p->next!=NULL&&i<n)
{
++i;
p=p->next;
// printf("%d-%d\n",i,p->data);
}
return p->data;
}
//getByIndex –查找第n个结点
Node* getByIndex(Node *phead,int n)
{
int i=0;
if(n<1) return phead;
Node *p=phead;
while(p->next!=NULL&&i<n)
{
++i;
p=p->next;
}
return p;
}
//getPosition –查找元素d的位置,如果成功返回d的位置,不成功返回-1
int getPos(Node *phead,int d)
{
Node *p=phead;
int i=0;
while(p->next!=NULL)
{
++i;
p=p->next;
if(d==p->data)
return i;
}
return -1;
}
//输出链表元素
void print(Node* phead)
{
Node* q=phead;
while(q->next!=NULL)
{
q=q->next;
printf("%d\n",q->data);
}
}
//移除第n个结点
void del_node(Node *phead,int n)
{
/* Node *prev;
Node *q=phead;
int i=0;
while(q->next!=NULL&&i<n)
{
++i;
prev=q;
q=q->next;
}
prev->next=q->next;
free(q);
q=NULL;
*/
Node* prev=getByIndex(phead,n-1);
Node* find=getByIndex(phead,n);
prev->next=find->next;
free(find);
find=NULL;
}
//链表清空
void clear(Node *phead)
{
Node *q=NULL;
while(phead!=NULL)
{
q=phead->next;
phead->next=NULL;
free(phead);
phead=q;
}
}
- C语言链表的创建、插入、查找、删除、清空操作
- C语言实现链表的创建、增加、删除、查询、逆序、清空等基本操作
- C语言实现带头结点的链表的创建、查找、插入、删除操作
- C语言---双向链表的插入、删除、查找操作
- C语言---双向链表的插入、删除、查找操作
- C语言顺序表的插入、删除、查找操作实现
- 单向循环链表创建、遍历、插入、删除、查找(按位置,按元素值)、清空、销毁
- 双向链表的创建、打印、求长、插入、删除、查值、清空、销毁
- 双向循环链表的创建、插入、删除、求长、查询、打印、修改、清空、销毁
- C语言实现带头结点的链表的创建、查找、插入、删除
- C语言实现链表的创建,初始化,插入,删除,查找
- 单向链表的操作:创建,删除,插入,销毁,查找
- c语言:顺序表的实现(一) 创建,插入,删除,查找,输出等基本操作实现
- C语言---单链表的插入、删除、查找操作
- C语言单向链表的创建、释放、插入、删除、翻转操作练习
- C语言链表的一般操作,创建,插入,遍历,删除
- 双向链表 C语言 (创建,插入,删除,判空,返回链表长度)
- c语言链表的创建、插入、删除、排序
- 微软面试题答案
- 关于寻址的一点猜想,以后真正了解了再修改
- the pointer to a structure
- poj 1003 Hangover
- kfs代码研究(二、meta server处理流程)
- C语言链表的创建、插入、查找、删除、清空操作
- 使用Validator改进数据向导生成的Flex应用
- Android模拟机出现Installation failed due to invalid APK file错误
- java哈希表
- 最大连续子序列--acm2479
- FLEX学习笔记:TileList点击到不同的部分,返回的event.target类型
- kfs代码研究(三、meta server具体消息处理)
- java读取配置文件的几种方法
- 一步一步构建自己的launcher(V0.1——提供功能入口)(2)