数据结构之单链表(尾插法)查找、插入和删除
2017-05-13 20:40
253 查看
这一次的难度主要体现在长,常常的代码让人望而生畏,不过,只要理解清楚了查找、插入和删除就好办了
代码
总结
这一次感觉还是收获挺大的,主要是意识到指针是真的是个好东西啊,随随便便就可以指向一个地址,好东西。查找、插入和删除对于单链表来说比较简单,就不介绍了,代码也相对简单,就是臃肿了点。
代码
#include<stdio.h> #include<malloc.h> typedef struct node { int data; struct node*next; }node; node*creat() { node*head,*q,*p; char ch; int a; head=(node*)malloc(sizeof(node)); q=head; ch='*'; puts("单链表尾插法,?结束"); while(ch!='?') { scanf("%d",&a); p=(node*)malloc(sizeof(node)); p->data=a; q->next=p; q=p; ch=getchar(); } q->next=NULL; return(head); } node*find(node*head,int x) { node*p; p=head->next; while((p!=NULL)&&(p->data!=x)) p=p->next; return p; } void insert(node*p,int x) { node*q; q=(node*)malloc(sizeof(node)); q->data=x; q->next=p->next; p->next=q; } void del(node*head,int x) { node*p,*q; q=head; p=q->next; while((p!=NULL)&&(p->data!=x)) { q=p; p=p->next; } if(p==NULL) { printf("error\n"); } else{ q->next=p->next; free(p); } } int main() { node*a,*b,*c; int x,y; a=creat(); printf("you want to find: ");scanf("%d",&x); b=a; b=find(a,x); if(b!=NULL) printf("\nfind the value:%d",b->data); else { printf("error"); return -1; } printf("\ninput be inserted value: ");scanf("%d",&y); printf("\ninsert the %d `s next",x); insert(b,y); c=a; printf("\nprint the list\n"); while(a->next!=NULL) { a=a->next; printf("%d ",a->data); } printf("\nyou want to del:");scanf("%d",&x); del(c,x); c=c->next; printf("the new list:\n"); while(c!=NULL) { printf("%d ",c->data); c=c->next; } return 0; }
总结
这一次感觉还是收获挺大的,主要是意识到指针是真的是个好东西啊,随随便便就可以指向一个地址,好东西。查找、插入和删除对于单链表来说比较简单,就不介绍了,代码也相对简单,就是臃肿了点。
相关文章推荐
- 数据结构:头插法、尾插法创建单链表,求链表长度、查找、插入、删除、合并
- 【数据结构作业二】写出单链表结点的结构体类型定义及查找、插入、删除算法,并以单链表作存储结构,实现有序表的合并
- 算法学习-数据结构之链表操作,创建,插入,删除,查找。
- 【数据结构】单链表(一)单链表的定义,插入,删除和查找操作
- 数据结构--双向循环链表--插入和删除
- 【程序员面试宝典】数据结构基础一单链表:创建|求长|插入|删除|排序|打印|逆置
- 【数据结构】——搜索二叉树的插入,查找和删除(递归&非递归)
- 数据结构作业代码保存-2.1 单向循环链表的建立,插入和删除,和指针移动
- 数据结构之头指针链表de三种插入方式(头插法,尾插法,在pos处插入)
- 数据结构:单链表(一)的创建、插入、删除、遍历,打印
- 【数据结构】顺序表、单链表、循环链表的插入与删除
- 数据结构学习二 数据结构之链表图解版【创建,遍历,删除,插入】
- C++ 数据结构的单链表的建立,插入,删除操作
- 【程序员面试宝典】数据结构基础二单链表循环链表的操作 建立|插入删除|打印|合并
- 数据结构——2 单链表插入和删除节点
- 【数据结构作业一】写出顺序表的结构体类型定义及查找、插入、删除算法,并以顺序表作存储结构,实现线性表的插入、删除
- C/C++,数据结构实现两个链表的合并(尾插法建立单链表,求链表长度,直接插入排序)
- 数据结构之各种数据结构插入、删除、查找的时间复杂度
- 数据结构基础5.2:二叉搜索树(BST)的基本操作(插入、查找、删除)
- 数据结构 单链表插入删除操作(c语言实现)