链表的各种操作
来源:互联网 发布:知天下吧 ztx8.net 编辑:程序博客网 时间:2024/05/01 07:38
链表结构:
typedef struct node
{
int data;//data数据域
struct node *next;//指针域
}Lnode,*Linklist;
//创建链表 长度为n,返回头结点,
Linklist Creatlink(int n)
{
int e;
Linklist first=NULL,last,p;
for(int i=0;i<n;i++)
{
cin>>e;
p=(Linklist)malloc(sizeof(Lnode));
p->data=e;
p->next=NULL;
if(first==NULL)
first=last=p;//first node.
else
last->next=p;
last=p;
}
return first;
}
//插入 节点 q为插入的节点,first为该list的头。
void insertlist(Linklist first,Linklist q,int e)
{
Linklist p;
p=(Linklist)malloc(sizeof(Lnode));
p->data=e;
if(!first)//链表为空
{
first=p;
p->next=NULL;
}
else
{
p->next=q->next;//两步:1.p和下个节点连起来
q->next=p;//2.q和p连起来。
}
}
//删除节点
Linklist delnodelist(Linklist first,Linklist q)
{
Linklist r;//q的前驱节点指针
if(q==first)//头结点
{
first=q->next;
free(q);
return first;
}
else
{
for(r=first;r->next!=q;r=r->next);//寻找q的前驱节点指针,赋给r
if(r->next!=NULL)
{
r->next=q->next;
free(q);
}
else if(q->next==NULL)//链表尾
{
r->next=NULL;
free(q);
}
return first;
}
}
//销毁链表
void destroylist(Linklist first)
{
Linklist p,q;
p=first;
while(p)
{
q=p->next;
free(p);
p=q;
}
first=NULL;
}
程序在VC6.0演示过,没问题,可以任意插入n个节点和删除n个节点。有问题欢迎指正!!!
- 链表的各种操作
- 链表的各种操作
- 链表的各种操作
- 链表的各种操作
- 链表的各种操作
- 链表的各种操作
- LinuxC双向链表的各种操作
- 链表的各种操作java版本
- 链表各种操作
- 线性表的各种操作
- 顺序表的各种操作
- 顺序表的各种操作
- 各种线性表的操作
- 各种图的各种操作
- 链表的各种操作的实现和改进
- 实现链表的各种操作(利用链表来实现)
- 使用Lua实现链表的各种操作
- 链表的建立以及各种基本操作
- Linux下基本栈溢出攻击
- hoiem的boost代码使用
- Custom SDI —— 向视图添加控件
- PHP源代码分析- tick(s)
- 关于Mono的好网站
- 链表的各种操作
- Linux管道的一些细节
- 复制360doc网页中的内容
- linux综合
- java常见面试题收集(质量不保证)
- 分享我的原创软件—MyRSS
- 哈希表实现的统计关键字频度
- Jdom将文件读和写xml
- 第六天(分支语句和逻辑操作符)