c链表结点的删除和添加
#include<stdio.h>
#include<stdlib.h>
typedef char datetype;/*定义新的数据类型名*/
typedef struct node
{
datetype date;
struct node *next;
}listnode;
typedef listnode *linklist;
int delete(linklist h,int num)/*删除结点*/
{
linklist p=h;
listnode *q=NULL;
int i=num;
int n=;
while(n<i)/*寻找删除位置*/
{
q=p;/*该结点和前后两个结点*/
p=p->next;
n++;
}
if(p==NULL)/*该结点不存在*/
printf("No Found Node!");
else
{
q->next=p->next;
free(p);
}
} void output(linklist head)/*链表遍历*/
{
linklist p=head;
while(p!=NULL)
{
printf("%c",p->date);
p=p->next;
}
}
int rear_creat(linklist head,int index0,int m)/*插入新结点,链表头,结点位置,结点date*/
{
linklist k,g;
int i=index0,n;
k=head;
n=;
while(n<i)/*寻找结点位置*/
{
n++;
k=k->next;
}
g=(listnode *)malloc(sizeof(listnode));
g->next=k->next;
g->date=m;
k->next=g;
}
int main()
{
char ch;
int index,index0;
char m;
linklist head=NULL;
listnode *p,*r;
ch=getchar();
while(ch!='\n')
{
p=(listnode *)malloc(sizeof(listnode));
p->date=ch;
if(head==NULL)
head=p;
else
r->next=p;
r=p;
ch=getchar();
}
output(head);
printf("\ndelete a node:\n");
scanf("%d",&index);
if(index==)
head=head->next;
else
delete(head,index);
output(head); printf("\ncreat a node:\n");
scanf("%d%c",&index0,&m);
rear_creat(head,index0,m);
output(head);
return ;
}
#include<stdio.h>/*尾插法*/
#include<stdlib.h>
typedef char datetype;
typedef struct node
{
datetype date;
struct node *next;
}listnode; typedef listnode *linklist;
linklist r=NULL,head=NULL; void rear_creat(datetype ch)
{
linklist p=NULL;
p=(listnode *)malloc(sizeof(listnode));
p->date=ch;
if(head==NULL)
{
head=p;
}
else
{
r->next=p;
}
r=p;
}
void output(linklist head)
{
while(head!=NULL)
{
printf("%c ",head->date);
head=head->next;
} }
void insert_rear(int index,int num)
{
listnode *p=NULL,*u;
u=head;
int n=;
p=(listnode *)malloc(sizeof(listnode));
p->date=index;
while(num>n)
{
u=u->next;
n++;
}
p->next=u->next;
u->next=p;
}
void delete(int num)
{
int n=;
linklist p=head,q;
while(num>n)
{
n++;
q=p;
p=p->next;
}
q->next=p->next;
} int main()
{
datetype index,ch;
int num;
ch=getchar();
while(ch!='\n')
{
rear_creat(ch);
ch=getchar();
}
output(head);
scanf("%c%d",&index,&num);
insert_rear(index,num);
output(head);
scanf("%d",&num);
delete(num);
output(head);
}
c链表结点的删除和添加的更多相关文章
- 时间复杂度分别为 O(n)和 O(1)的删除单链表结点的方法
有一个单链表,提供了头指针和一个结点指针,设计一个函数,在 O(1)时间内删除该结点指针指向的结点. 众所周知,链表无法随机存储,只能从头到尾去遍历整个链表,遇到目标节点之后删除之,这是最常规的思路和 ...
- 剑指Offer面试题:12.在O(1)时间删除链表结点
一.题目:在O(1)时间删除链表结点 题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点. 原文采用的是C/C++,这里采用C#,节点定义如下: public class ...
- 【编程题目】在 O(1)时间内删除链表结点
60.在 O(1)时间内删除链表结点(链表.算法).题目:给定链表的头指针和一个结点指针,在 O(1)时间删除该结点.链表结点的定义如下:struct ListNode{int m_nKey;List ...
- 33.在O(1)时间删除链表结点[DeleteListNode]
[题目] 给定链表的头指针和一个结点指针,在O(1)时间删除该结点.链表结点的定义如下: C++ Code 123456 struct ListNode { int m_ ...
- 剑指Offer:面试题13——在O(1)时间删除链表结点
问题描述: 给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点.链表结点与函数的定义如下: public class ListNode{ int value; ListNode ...
- 【面试题013】在O(1)时间删除链表结点
[面试题013]在O(1)时间删除链表结点 我们要删除结点i,我们可以把结点i的下一个结点j的内容复制到结点i,然后呢把结点i的指针指向结点j的下一个结点.然后在删除结点j. 1.如果结点i位于链表 ...
- 【剑指offer 面试题13】在 O(1) 时间删除链表结点
#include <iostream> using namespace std; //构造链表结点 struct ListNode { int val; ListNode *next; L ...
- 在O(1)时间删除链表结点
题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点. 链表结点与函数的定义如下: struct ListNode { int m_nValue; ListNode* m_p ...
- P99、面试题13:在o(1)时间删除链表结点
题目:给定单向链表的头指针和一个结点指针,定义一个函数在o(1)时间删除该结点.链表结点与函数的定义如下:struct ListNode{ int m_nValue; List ...
随机推荐
- 【好程序员笔记分享】——iOS开发之纯代码键盘退出
-iOS培训,iOS学习-------型技术博客.期待与您交流!------------ iOS开发之纯代码键盘退出(非常简单) iOS开发之纯代码键盘退出 前面说到了好几次关于键盘退出的,但 ...
- Android开发之打开闪光灯录制视频
Android的SDK在线API上对录制视频的方法.步骤都写得非常清楚,但是如果没有一点思路,写起来也比较式费事.录制视频的全过程要打开闪光灯(可能是因为项目需要,或者特殊原因),则必须按照一定的顺序 ...
- 使用filter统一设置编码
1.写一个类EncodingFilter.java,实现javax.servlet.Filter(文件命名做到见名知意) package com.filter; import java.io.IOEx ...
- SpringMVC–SSH -- RESTful -- JSR303
最近在使用SpringMVC+MyBatis感觉用起来效果很好.我不太明白SpringMVC和SSH的关系,遂搜索了一下.原来使用SpringMVC之后,可以替代之前的SSH这种开发模式. 附上知乎链 ...
- Oracle 10g RAC启动与关闭命令
一. 检查共享设备 一般情况下, 存放OCR 和 Voting Disk 的OCFS2 或者raw 都是自动启动的. 如果他们没有启动,RAC 肯定是启动不了的. 1.1 如果使用ocfs2的,检查o ...
- Android setTextColor无效_安卓setTextColor()的参数设置方式
通过代码setTextColor时.如果color是一个资源文件 会set失败 没有效果 遇到这样的情况有两种解决办法.亲测过.两种都是有效的 一.注解方式 通过在方法上面添加注解解决问题 代码如下 ...
- HDU1841——KMP算法
这个题..需要对KMP的模板理解的比较透彻,以前我也只是会套模板..后来才知道..之会套模板是不行的..如果不能把握模板的每一个细节`,至少能搞清楚模板的每一个模块大体是什么意思.. 题意是给出两个串 ...
- 7款纯CSS3实现的炫酷动画应用|慕课网只学有用的!
关于我们 | 时尚廊 ♦ 时尚廊,中国大陆地区首家以"Lounge"为概念的艺文空间 ♦ 7款纯CSS3实现的炫酷动画应用|慕课网只学有用的! 7款纯CSS3实现的炫酷动画应用
- 最简单的XML转数组
/** * 最简单的XML转数组 * @param string $xmlstring XML字符串 * @return array XML数组 */ function simplest_xml_to ...
- qt视图选择
# -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' from PyQt4.Qt import * from PyQt4. ...