#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链表结点的删除和添加的更多相关文章

  1. 时间复杂度分别为 O(n)和 O(1)的删除单链表结点的方法

    有一个单链表,提供了头指针和一个结点指针,设计一个函数,在 O(1)时间内删除该结点指针指向的结点. 众所周知,链表无法随机存储,只能从头到尾去遍历整个链表,遇到目标节点之后删除之,这是最常规的思路和 ...

  2. 剑指Offer面试题:12.在O(1)时间删除链表结点

    一.题目:在O(1)时间删除链表结点 题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点. 原文采用的是C/C++,这里采用C#,节点定义如下: public class ...

  3. 【编程题目】在 O(1)时间内删除链表结点

    60.在 O(1)时间内删除链表结点(链表.算法).题目:给定链表的头指针和一个结点指针,在 O(1)时间删除该结点.链表结点的定义如下:struct ListNode{int m_nKey;List ...

  4. 33.在O(1)时间删除链表结点[DeleteListNode]

    [题目] 给定链表的头指针和一个结点指针,在O(1)时间删除该结点.链表结点的定义如下:  C++ Code  123456   struct ListNode {     int        m_ ...

  5. 剑指Offer:面试题13——在O(1)时间删除链表结点

    问题描述: 给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点.链表结点与函数的定义如下: public class ListNode{ int value; ListNode ...

  6. 【面试题013】在O(1)时间删除链表结点

    [面试题013]在O(1)时间删除链表结点  我们要删除结点i,我们可以把结点i的下一个结点j的内容复制到结点i,然后呢把结点i的指针指向结点j的下一个结点.然后在删除结点j. 1.如果结点i位于链表 ...

  7. 【剑指offer 面试题13】在 O(1) 时间删除链表结点

    #include <iostream> using namespace std; //构造链表结点 struct ListNode { int val; ListNode *next; L ...

  8. 在O(1)时间删除链表结点

    题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点. 链表结点与函数的定义如下: struct ListNode { int m_nValue; ListNode* m_p ...

  9. P99、面试题13:在o(1)时间删除链表结点

    题目:给定单向链表的头指针和一个结点指针,定义一个函数在o(1)时间删除该结点.链表结点与函数的定义如下:struct ListNode{       int m_nValue;       List ...

随机推荐

  1. 【好程序员笔记分享】——iOS开发之纯代码键盘退出

    -iOS培训,iOS学习-------型技术博客.期待与您交流!------------ iOS开发之纯代码键盘退出(非常简单)     iOS开发之纯代码键盘退出 前面说到了好几次关于键盘退出的,但 ...

  2. Android开发之打开闪光灯录制视频

    Android的SDK在线API上对录制视频的方法.步骤都写得非常清楚,但是如果没有一点思路,写起来也比较式费事.录制视频的全过程要打开闪光灯(可能是因为项目需要,或者特殊原因),则必须按照一定的顺序 ...

  3. 使用filter统一设置编码

    1.写一个类EncodingFilter.java,实现javax.servlet.Filter(文件命名做到见名知意) package com.filter; import java.io.IOEx ...

  4. SpringMVC–SSH -- RESTful -- JSR303

    最近在使用SpringMVC+MyBatis感觉用起来效果很好.我不太明白SpringMVC和SSH的关系,遂搜索了一下.原来使用SpringMVC之后,可以替代之前的SSH这种开发模式. 附上知乎链 ...

  5. Oracle 10g RAC启动与关闭命令

    一. 检查共享设备 一般情况下, 存放OCR 和 Voting Disk 的OCFS2 或者raw 都是自动启动的. 如果他们没有启动,RAC 肯定是启动不了的. 1.1 如果使用ocfs2的,检查o ...

  6. Android setTextColor无效_安卓setTextColor()的参数设置方式

    通过代码setTextColor时.如果color是一个资源文件 会set失败 没有效果 遇到这样的情况有两种解决办法.亲测过.两种都是有效的 一.注解方式 通过在方法上面添加注解解决问题 代码如下 ...

  7. HDU1841——KMP算法

    这个题..需要对KMP的模板理解的比较透彻,以前我也只是会套模板..后来才知道..之会套模板是不行的..如果不能把握模板的每一个细节`,至少能搞清楚模板的每一个模块大体是什么意思.. 题意是给出两个串 ...

  8. 7款纯CSS3实现的炫酷动画应用|慕课网只学有用的!

    关于我们 | 时尚廊 ♦ 时尚廊,中国大陆地区首家以"Lounge"为概念的艺文空间 ♦  7款纯CSS3实现的炫酷动画应用|慕课网只学有用的! 7款纯CSS3实现的炫酷动画应用

  9. 最简单的XML转数组

    /** * 最简单的XML转数组 * @param string $xmlstring XML字符串 * @return array XML数组 */ function simplest_xml_to ...

  10. qt视图选择

    # -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' from PyQt4.Qt import * from PyQt4. ...