数据结构 单链表插入删除操作(c语言实现)
2015-11-29 16:46
801 查看
#include "stdlib.h" #include "stdio.h" typedef struct LNode{ int data; struct LNode *next; }LNode,*LinkList; void Create_List(LinkList &L){ int data; LinkList p,q; L=(LinkList)malloc(sizeof(LNode)); L->next=NULL; q=L; scanf("%d",&data); while(data!=0){ p=(LinkList)malloc(sizeof(LNode)); p->data=data; p->next=q->next; q->next=p; q=p; scanf("%d",&data); } q=L; } void TranverseList(LinkList L){ LinkList p; p=L->next; if(p==NULL){ printf("null\n"); return; } while(p!=NULL){ printf("%d,",p->data); p=p->next; } printf("\n"); } void ListDelet(LinkList &L,int delElem){ LinkList p,temp; p=L; int tag=0; while(p->next!=NULL){ if(p->next->data==delElem){ temp=p; tag=1; break; } p=p->next; } if(tag==0){ return ; } if(temp->next->next==NULL&&tag==1){ temp->next=NULL; }else if(tag==1){ temp->next=p->next->next; } } void Insert(LinkList &L,int elem){ LinkList p; LinkList s; p=L; s=(LinkList)malloc(sizeof(LNode)); s->data=elem; s->next=NULL; while(p->next!=NULL){ if(p->next->data==elem) break; if(p->next->data>elem){ s->next=p->next; p->next=s; break; } p=p->next; } if(p->next==NULL&&p->data<elem){ p->next=s; } } int main(){ LinkList L; Create_List(L); printf("插入前:"); TranverseList(L); Insert(L,4); Insert(L,1); Insert(L,10); Insert(L,3); printf("插入4,1,10,3后:"); TranverseList(L); ListDelet(L,5); ListDelet(L,1); ListDelet(L,10); ListDelet(L,8); printf("删除5,1,10,8后:"); TranverseList(L); Insert(L,4); printf("插入4后:"); TranverseList(L); ListDelet(L,2); printf("删除2后:"); TranverseList(L); return 0; }
相关文章推荐
- 如何组织构建多文件 C 语言程序(二)
- 如何写好 C main 函数
- C#数据结构之顺序表(SeqList)实例详解
- Lua和C语言的交互详解
- Lua教程(七):数据结构详解
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- C#数据结构之队列(Quene)实例详解
- C#数据结构揭秘一
- C#定义并实现单链表实例解析
- C#数据结构之单链表(LinkList)实例详解
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言中fchdir()函数和rewinddir()函数的使用详解
- C语言内存对齐实例详解
- 使用C语言判断英文字符大小写的方法
- c语言实现的带通配符匹配算法
- C语言实现顺序表基本操作汇总
- linux----->shell高级编程----1