基本链表的创建,结点插入、删除
来源:互联网 发布:c语言计算器三角函数 编辑:程序博客网 时间:2024/06/11 13:57
#include <stdio.h>
#include <stdlib.h>
typedef struct llist{
int data;
struct llist *next;
}node,*link;
//输出链表
void printlist(link head)
{
link ptr;
ptr=head->next;
while(ptr!=NULL)
{
printf("%d ",ptr->data);
ptr=ptr->next;
}
printf("\n");
}
//创建链表
link createlist(int *array,int n)
{
link head;
link ptr,ptr1;
int i;
head=(link)malloc(sizeof(node));
if(!head)
{
printf("out of memory\n");
exit(1);
}
ptr=head;
printf("请输入你想输出的链表!\n");
for(i=0;i<n;i++)
{
scanf("%d",&array[i]);
ptr1=(link)malloc(sizeof(node));
if(!ptr1)
{
printf("out of memory!\n");
exit(1);
}
ptr1->data=array[i];
ptr1->next=NULL;
ptr->next=ptr1;
ptr=ptr1;
}
return head;
}
//寻找结点
link findnode(link head,int value)
{
link ptr;
ptr=head->next;
while(ptr!=NULL)
{
if(ptr->data==value)
return ptr;
else
ptr=ptr->next;
}
return NULL;
}
//插入结点
link insertnode(link head,int insertvalue)
{
link newnode,getnode;
newnode=(link)malloc(sizeof(node));
if(!newnode)
{
printf("out of memory!\n");
exit(1);
}
newnode->data=insertvalue;
newnode->next=NULL;
getnode=findnode(head,insertvalue);
if(!getnode)//如果没有找到结点,就插入到第一个结点之前
{
newnode->next=head->next;
head->next=newnode;
}
else//找到指定结点,就插入到指定结点后面
{
newnode->next=getnode->next;
getnode->next=newnode;
}
return head;
}
//删除结点
link deletenode(link head,link ptr)
{
link previous;
previous=head;
while(previous->next!=ptr)
{
previous=previous->next;
}
if(ptr->next==NULL)//删除尾结点
previous->next=NULL;
else
previous->next=ptr->next;
return head;
}
//主函数
void main()
{
int array[5];
int insertvalue,deletevalue;
link ptr;
link head;
head=createlist(array,5);//创建链表
printlist(head);//输出创建的链表
printf("请输入你要插入的结点!\n");
scanf("%d",&insertvalue);
insertnode(head,insertvalue);//插入结点
printlist(head);//输出插入结点后的链表
printf("请输入你要删除的结点\n");
scanf("%d",&deletevalue);
ptr=findnode(head,deletevalue);
deletenode(head,ptr);
printlist(head);//输出删除结点后的链表
}
- 基本链表的创建,结点插入、删除
- 学习笔记——C语言实现单链表的基本操作:创建、输出、插入结点、删除结点、逆序链表
- 学习笔记——C语言实现单链表的基本操作:创建、输出、插入结点、删除结点、逆序链表
- 用结构体实现链表的创建、遍历、结点插入、结点删除
- 用结构体实现链表的创建、遍历、结点插入、结点删除、链表删除-----带菜单选项
- 双向链表的创建、结点的插入、删除与打印
- C语言实现带头结点的链表的创建、查找、插入、删除
- C语言实现带头结点的链表的创建、查找、插入、删除操作
- 链表的基本操作,创建、删除、插入、反转
- C语言实现单链表(带头结点)的基本操作(创建,头插法,尾插法,删除结点,打印链表)
- C语言实现单链表(带头结点)的基本操作(创建,头插法,尾插法,删除结点,打印链表)
- 《剑指offer》链表的结点的插入删除
- 链表的结点插入,删除等操作
- 二叉排序树的创建(结点的插入,删除等操作)
- Java双向链表的创建结点,清空链表,添加结点,删除结点
- 数据结构中 链表的创建,值的插入以及删除(一定注意头结点的作用)
- 程序员面试宝典_链表基本操作,建立,求长,删除和插入特定值的结点
- 单链表的创建、插入、删除、销毁以及查找中间结点
- C语言目录操作 (Linux/Unix)
- myeclipse6.6的开发速度优化
- 获取汉字的拼音索引
- 开源GIS软件SharpMap
- oracle删除大表的数据的方法
- 基本链表的创建,结点插入、删除
- 《Windows程序设计》之计时器1
- Django新手需要注意的10个要点
- 重启操作系统
- gethostbyname()不成功的可能原因!
- malloc和new的区别
- AJaxPro + JS 写的仿百度文本框智能关联提示(付图)。
- 目录下搜索文件
- linux /usr目录