程序员面试宝典_链表基本操作,建立,求长,删除和插入特定值的结点
来源:互联网 发布:增大音量的软件 编辑:程序博客网 时间:2024/05/22 05:22
删除data1值的结点,插入data2值的结点/*程序参见《程序员面试宝典》179页,链表长度不包含头结点,终止条件:输入0********************************************************************/#include<stdio.h>#include <stdlib.h>#include<conio.h>typedef struct student{int data;struct student *next;}node;//单链表建立过程,函数声明和定义node *creat(){node *head,*p,*s;int x,cycle=1;head=(node*)malloc(sizeof(node));if(head==NULL){printf("分配存储空间失败");exit(0);}p=head;while(cycle){printf("please input the data:");scanf("%d",&x);if(x!=0){s=(node*)malloc(sizeof(node));if(s==NULL){printf("分配存储空间失败");exit(0);}s->data=x;printf("%d\n",s->data);p->next=s;p=s;}else cycle=0;}head=head->next; //这一句的解释:head原来为指向头结点的指针(头指针),经过这句后,head指向第一个结点//单链表的长度不包含头结点,头结点位置一般设为i=0。p->next=NULL;printf("yyy %d\n",head->data);return head;}//单链表测长************************************int length(node *head){int n=0;node *p;p=head;while(p!=NULL){p=p->next;n++;}return n;}//单链表打印@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@void print(node *head){node *p;int n;n=length(head);printf("Now,these %d records are :\n",n);p=head;if(head!=NULL)while(p!=NULL){printf("uuuu %d \n ",p->data);p=p->next;}}<pre name="code" class="cpp">//单链表删除一个数据域为data1的结点node *del_data1(node *head,int data1){node *p1,*p2;p1=head;while(data1!=p1->data&&p1->next!=NULL){p2=p1;p1=p1->next; }if(data1==p1->data){if(p1==head)//删除第一个结点{head=p1->next;free(p1);}else p2->next=p1->next;//}elseprintf("\n%d could not been found",data1);return head;}//单链表插入一个数据域为data2的结点node *insert_data2(node *head,int data2){node *p0,*p1,*p2;p1=head;p0=(node *)malloc(sizeof(node));p0->data=data2;while(p0->data>p1->data&&p1->next!=NULL){p2=p1;p1=p1->next;}if(p0->data<=p1->data){if(head==p1)//插入位置为第一个结点之前{p0->next=p1;head=p0;}else//一般情况{p2->next=p0;p0->next=p1;}}else//插入位置为最后一个结点之后{p1->next=p0;p0->next=NULL;}return head;}
//主函数**************************int main(){ node *head1;int n1; head1=creat();//建立 n1=length(head1); printf("the length of the list is %d\n",n1);//求表长 print(head1);//打印 return 0;}
0 0
- 程序员面试宝典_链表基本操作,建立,求长,删除和插入特定值的结点
- 程序员面试宝典(第三版)——单链表的基本操作:建立,求长度,输出,排序,插入,删除,逆置
- 【程序员面试宝典】数据结构基础二单链表循环链表的操作 建立|插入删除|打印|合并
- 程序员面试宝典(第三版)——单链表的基本操作:建立,求长度,输出,排序,插入,删除,逆置(转)
- 单链表的建立、求长、插入、删除、输出和释放 (带头结点)
- 程序员面试宝典之数据结构基础----⑥双链表的建立,插入和删除
- 【程序员面试宝典】数据结构基础一单链表:创建|求长|插入|删除|排序|打印|逆置
- 链表的基本操作,建立,测长,删除,打印,插入
- 双链表的建立、求长、定位、插入、删除、输出和释放(带头结点且成环状)
- 链表建立、删除、插入基本操作
- [C/C++程序员面试宝典] 程序员面试宝典(33)-在O(1)时间删除链表结点
- 带头结点单链表的基本操作(创建、测长、打印、插入、删除、取值、合并、排序、逆置)
- 程序员面试宝典(33)-在O(1)时间删除链表结点
- 编程实现双链表的建立、插入、删除、求长、逆置
- 双链表的建立、求长、定位、插入、删除、输出和释放
- 学习笔记——C语言实现单链表的基本操作:创建、输出、插入结点、删除结点、逆序链表
- 学习笔记——C语言实现单链表的基本操作:创建、输出、插入结点、删除结点、逆序链表
- 基本链表的创建,结点插入、删除
- 二分查找算法
- redhat server上配置NFS服务
- ubuntu安装字体
- javascript 学习笔记(3) 闭包
- 电信141p123第30题
- 程序员面试宝典_链表基本操作,建立,求长,删除和插入特定值的结点
- ZigZag Conversion
- Android UI之在popupwindow中获取控件注意问题
- VMwareTools安装及出现kernel header path的解决方法
- 基础知识(三)makefile文件编写初级篇
- visa paywave检测流程
- JavaScript获取当前根目录
- oracle分析函数sum求逐行递减
- Qt浅谈之二十六图片滑动效果