单链表的增删改查功能实现C语言代码
2018-01-24 10:09
495 查看
上一篇博客写了单链表的创建(头插法,尾插法)现在写数据结构的增删改查#include <stdio.h>#include <stdlib.h>#include <string.h>typedef int ELem;typedef struct Node{ int date; struct Node *next;}Node;typedef struct Node *Linklist;void chuangjian(Linklist *L,int n){ Linklist p,t;//声明结点 *L=(Linklist)malloc(sizeof(Node));//生成新结点 (*L)->next=NULL;//新结点指向空结点 t=(*L);//中间值 for(int i=0;i<n;i++) {/*//头插法 p=(Linklist)malloc(sizeof(Linklist));//生成新结点p scanf("%d",&(p->date));//为新结点的date域赋值 p->next=(*L)->next;//p的后继指向(*L)的后继 (*L)->next=p;*///插入到表头//尾插法 p=(Linklist)malloc(sizeof(Node));//生成新结点p p->next=NULL;//p结点的后继为空 scanf("%d",&(p->date));//赋值操作 t->next = p;//将表尾终端结点的指针指向新结点 t = p;//将当前结点定义为表尾终端节点 }}void Tiqu(Linklist L,int i,int *e){ int j=1; Linklist p; p=L->next; while (p&&j<i) { p=p->next; ++j; } *e =p->date;}void shanchu(Linklist *L,int i,int *e){ int j=1; Linklist p,q; p=*L; while (p->next&&j<i) { p=p->next; ++j; } q=p->next; *e=q->date; p->next=p->next->next; free(q);}void genggai(Linklist *L,int i,int e){ int j=1; Linklist p; p=*L; while (p&&j<i) { p=p->next; j++;
4000
} p->next->date=e;}void zengjia(Linklist *L,int i,int x){int j=1; Linklist p,q; p=*L; q=(Linklist)malloc(sizeof(Linklist)); q->next=NULL; q->date=x; while (p->next&&j<i) { p=p->next; j++; } q->next=p->next; p->next=q;}int main(int argc, const char * argv[]) { Linklist l,s,p,h; int a,i,j,q,w,e,r; printf("请输入要输入多少个数据"); scanf("%d",&a); chuangjian(&l, a); p=l; s=l; h=l; while (l->next!=NULL) { l=l->next; printf("%d\t",l->date); } printf("请输入要查找第几个数据\n"); scanf("%d",&i); Tiqu(p,i,&i); printf("要查找的数据为"); printf("%d\t",i); printf("\n"); printf("请输入要删除第几个数据"); scanf("%d",&j); shanchu(&p,j,&j); printf("删除后的链表为"); while (p->next != NULL) { p = p->next; printf("%d\t",p->date); } printf("\n"); printf("删除的数据是"); printf("%d\n",j); printf("修改第几个位置\n"); scanf("%d",&q); printf("修改为多少\n"); scanf("%d",&w); genggai(&s,q,w); printf("更改获得的链表为\n"); while (s->next != NULL) { s = s->next; printf("%d\t",s->date); } printf("\n"); printf("添加的位置\n"); scanf("%d",&e); printf("添加数据为多少\n"); scanf("%d",&r); zengjia(&h,e,r); while (h->next != NULL) { h = h->next; printf("%d\t",h->date); } return 0;}
4000
} p->next->date=e;}void zengjia(Linklist *L,int i,int x){int j=1; Linklist p,q; p=*L; q=(Linklist)malloc(sizeof(Linklist)); q->next=NULL; q->date=x; while (p->next&&j<i) { p=p->next; j++; } q->next=p->next; p->next=q;}int main(int argc, const char * argv[]) { Linklist l,s,p,h; int a,i,j,q,w,e,r; printf("请输入要输入多少个数据"); scanf("%d",&a); chuangjian(&l, a); p=l; s=l; h=l; while (l->next!=NULL) { l=l->next; printf("%d\t",l->date); } printf("请输入要查找第几个数据\n"); scanf("%d",&i); Tiqu(p,i,&i); printf("要查找的数据为"); printf("%d\t",i); printf("\n"); printf("请输入要删除第几个数据"); scanf("%d",&j); shanchu(&p,j,&j); printf("删除后的链表为"); while (p->next != NULL) { p = p->next; printf("%d\t",p->date); } printf("\n"); printf("删除的数据是"); printf("%d\n",j); printf("修改第几个位置\n"); scanf("%d",&q); printf("修改为多少\n"); scanf("%d",&w); genggai(&s,q,w); printf("更改获得的链表为\n"); while (s->next != NULL) { s = s->next; printf("%d\t",s->date); } printf("\n"); printf("添加的位置\n"); scanf("%d",&e); printf("添加数据为多少\n"); scanf("%d",&r); zengjia(&h,e,r); while (h->next != NULL) { h = h->next; printf("%d\t",h->date); } return 0;}
相关文章推荐
- C语言实现聊天工具钟的抖动窗口功能,代码很简单,思路也很简单
- 双链表的增删改查的功能实现代码。
- C语言双向链表实现根据使用频率安排元素位置的功能实例代码
- C语言双链表,可实现增删改查功能,还可以将链表反转。
- java创建单链表及增删改查功能实现
- C语言简单实现sizeof功能代码
- Online Coding开发模式 (通过在线配置实现一个表模型的增删改查功能,无需写任何代码)
- 【C语言】【unix c】编写代码实现cat的功能
- c语言实现的货物管理系统实例代码(增加删除 查找货物信息等功能)
- PHP实现数据库的增删查改功能及完整代码
- Online Coding开发模式 (通过在线配置实现一个表模型的增删改查功能,无需写任何代码)
- C语言实现的统计php代码行数功能源码(支持文件夹、多目录)
- JAVA_WEB项目之Lucene检索框架实现增删查改的代码优化以及分页功能实现
- 【转】PostgreSQL 数据库C语言代码实现【数据库连接,创建表, 以及增删改查】
- C语言:单链表简单功能实现
- C语言实现单链表增删查找等功能
- C语言单链表的建立,查找,添加,删除,修改功能实现
- c语言实现单链表的及各项基本功能
- C语言实现单链表的增删查改
- GridView绑定SqlDataSource以其自带功能实现增删查改等操作(不写后台代码)一