DeleteNode
来源:互联网 发布:中日建交 知乎 编辑:程序博客网 时间:2024/06/01 07:26
#include<stdio.h>#include<stdlib.h>typedef struct LinkNode{int val;LinkNode* next;}*LinkList;//不带头结点LinkNode* CreateLink(int n){LinkList l=NULL;;if(n<=0){printf("链表为空\n");return NULL;}l=(LinkNode*)malloc(sizeof(LinkNode));if(!l){printf("overflow!");exit(1);}printf("请输入结点的值\n");scanf("%d",&l->val);l->next=NULL;LinkNode *p,*q;q=l;for(int i=1;i<n;i++){p=(LinkNode*)malloc(sizeof(LinkNode)); if(!l){printf("overflow!");exit(1); } printf("请输入结点的值\n"); scanf("%d",&p->val);p->next=q->next;q->next=p;q=p;}return l;}void Print(LinkList l){LinkNode *p;p=l;while(p){printf("%3d",p->val);p=p->next;}printf("\n");}//删除指定指针的节点: 中间节点 尾节点 只有一个节点void DeleteNode(LinkNode** l,LinkNode *p){if(l==NULL||p==NULL)return;if(p->next!=NULL){LinkNode *q=p->next;p->val=q->val;p->next=q->next;delete q;}else if(p==*l){delete p;p=NULL;*l=NULL;}else{LinkNode* q=*l;while(q->next!=p)q=q->next;q->next=NULL;delete p;p=NULL;}}LinkNode* RandomPointer(LinkList l,int n){int j=rand()%n+1;printf("%3d\n",j);LinkNode* p=l;for(int i=1;i<j;i++)p=p->next;return p;}LinkNode* PointedPointer(LinkList l,int n){LinkNode* p=l;for(int i=1;i<n;i++)p=p->next;return p;}void main(){int n,j;printf("请输入节点的个数\n");scanf("%d",&n);LinkList l=CreateLink(n);Print(l);if(l==NULL){printf("链表为空\n");return;}// 链表中有多个结点,删除中间的结点//LinkNode* p=RandomPointer(l,n);// 链表中有多个结点,删除尾结点printf("输入删除第几个节点\n");scanf("%d",&j);LinkNode* p=PointedPointer(l,j);DeleteNode(&l,p);Print(l);}
0 0
- DeleteNode
- bootstrap-treeview addNode deleteNode editNode 全都奉上
- bootstrap-treeview 扩展addNode deleteNode方法 动态添加删除子节点的方法
- 例题4-5 追踪电子表格中的单元格 UVa512
- 使用ajax实现从服务器获得时间
- UEditor摘要
- C++ string的用法和例子
- 从入门到放弃C语言-瞎倒腾(1)
- DeleteNode
- 尺取法专题 POJ 3061 POJ 3320 POJ 2566
- 进制转换
- 深入浅出—设计模式重要原则
- ajax执行流程
- laravel中数据库查询leftJoin应注意的问题
- CentOS/RedHat更改文件夹打开方式(增加路径、前进、后退按钮)
- 【JAVA开发技术】全球范围内高质量的优秀Java开发者博客
- zookeeper安装配置