单向链表增删查
2018-07-22 05:46:39来源:博客园 阅读 ()
#include"stdio.h"
#include"stdlib.h"
typedef struct node{
int e;
struct node *next;
}*NNode;
//初始化
NNode InitList(NNode L){
NNode head=NULL;
head=(NNode)malloc(sizeof(node));
if(!head){
return 0;
}
head->next=NULL;
L=head;
return L;
}
//重置
void ClearList(NNode L){
NNode p=NULL;
if(L->next){
p=L->next;
free(L);
}
}
//判空
bool ListEmpty(NNode L){
if(L->next==NULL)
return true;
else return false;
}
//长度
int ListLength(NNode L){
NNode p=NULL;
int count=0;
p=L;
while(p->next){
count++;
p=p->next;
}
return count;
}
//创建n个节点插入头节点之后
NNode CreatList(NNode L,int n){
NNode p=NULL;
for(int i=0;i<n;i++){
p=(NNode)malloc(sizeof(node));
scanf("%d",&(p->e));
p->next=L->next;
L->next=p;
}
return L;
}
//GetElem获取
int GetElem(NNode L,int n){
NNode p=NULL,q=NULL;
int j=0;
q=L;
if(q->next&&j<n){
j++;
q=q->next;
if(j+1==n)
return (L->e);
}else{
printf("输入错误");
return 0;
}
}
//获取指定元素的位置
int LocateElem(NNode L,int e){
int i=0;
NNode p=NULL;
p=L;
while(p->next&&p->e!=e){
p=p->next;
i++;
}
if(!p->next){
printf("查找失败");
return -1;
}
if(p->e==e)
return i;
}
//输出
void Out(NNode L){
NNode p;
p=L->next;
while(p)
{
printf("%d",p->e);
p=p->next;
printf("\n");
}
}
//插入
NNode LisetInsert(NNode L,int e,int n){
NNode p=NULL,q=NULL;
int j=1;
q=L;
if(q->next&&j<n){
j++;
q=q->next;
}else{
printf("输入错误");
return L;
}
p= (NNode)malloc(sizeof(node));
p->e=e;
p->next=q->next;
q->next=p;
return L;
}
//删除指定节点
NNode ListDelete(NNode L,int n){
NNode p=NULL,q=NULL;
int j=0;
q=L;
if(q->next&&j<n-1){
j++;
q=q->next;
}else{
printf("输入错误");
return L;
}
p=q->next;
q->next=p->next;
free(p);
return L;
}
void main(){
int n,m,i,e;
NNode L=NULL;
//printf("是否为空:");
//printf("%d",ListEmpty(L));//
L=InitList(L);//
printf("初始化成功");
//printf("是否为空:");
//printf("%d",ListEmpty(L));//
CreatList(L,5);//
printf("长度为:");
printf("%d\n",ListLength(L));
printf("输出为");
Out(L);
printf("是否为空:");
printf("%d",ListEmpty(L));//
ListDelete(L,2);//
Out(L);
printf("长度为:");
printf("%d",ListLength(L));
printf("插入后");
LisetInsert(L,4,2);
Out(L);
printf("定位");
m=LocateElem(L,4);
printf("%d",m);
}
//区分typedef struct和struct的区别
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- leetcode 反转链表 2020-06-06
- 数据结构—链表 2020-05-29
- STL之list 2020-04-30
- 单链表 2020-03-31
- DSA_04:链表 2020-03-28
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash