数据结构双链表的插入和删除有问题了,求大佬看看

void insert(double price, int number,int time,char* name,int date,int id)
{
movRecord* node = record.next;
movRecord* p = record.next;

while (node != NULL)
{
        if (node->id > id)  break;
        else
        node = node->next;
}
movRecord* tmp = (movRecord *)malloc(sizeof(movRecord));
tmp->id = id;
tmp->date = date;
strcpy(tmp->name,name);
tmp->time = time;
tmp->number = number;
tmp->price = price;   
    if( id<10)
{

node->prior->next= tmp;
tmp->prior=node->prior;
tmp->next = node;
node->prior=tmp;
}
 else
{     
node->prior->next=tmp;
tmp->prior=node;
tmp->next=NULL;

}

while(p!=NULL)
{
    printf("电影编号:%3d\t放映日期:%10d\t电影名:%5s\t场次:%2d\t票数量:%4d\t票价:%5.2lf\t\n", 
    p->id, p->date,p->name,p->time,p->number,p->price);
    p=p->next;
}

}

void delete(int id)
{
movRecord* node = record.next;
movRecord* p=record.next;
while (node != NULL && node->id != id)
{
node = node->next;
}
if (node)
{
node->prior->next = node->next;
node->next->prior = node->prior;
free(node);
}

else
    printf("无法找到该文件\n");  

while(p!=NULL)
{
    printf("电影编号:%3d\t放映日期:%10d\t电影名:%5s\t场次:%2d\t票数量:%4d\t票价:%5.2lf\t\n",
     p->id, p->date,p->name,p->time,p->number,p->price);
    p=p->next;
}

}

0

1个回答

不知道你其他的代码是怎么样子的。头结点和尾节点,在插入和删除的时候,要特殊对待的。

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
数据结构——10 双向链表插入和删除节点
双向链表——插入、删除指定位置和相同节点
数据结构——双向链表的插入和删除操作
/*n双向链表的插入和删除操作nn2018.04.14n*/nn#include&amp;lt;iostream&amp;gt;n#include&amp;lt;string.h&amp;gt;n#include&amp;lt;stdlib.h&amp;gt;nusing namespace std;nntypedef int Status;n#define OK 1n#define ERROR 0n#define OVERFLOW -2nnt...
双向链表的基本操作
双向链表的插入顺序:rnrn双向链表的删除顺序:rnrnrnrnrn#include n#include ntypedef struct doubleLink n{ n int data; n struct doubleLink *pre; n struct doubleLink *next; n}dnode; n n//建立链表 ndnode* create
java数据结构与算法之双链表设计与实现
转载请注明出处(万分感谢!): n http://blog.csdn.net/javazejian/article/details/53047590 n 出自【zejian的博客】 n关联文章:java数据结构与算法之顺序表与链表设计与实现分析 njava数据结构与算法之双链表设计与实现  上一篇文章分析顺序表和单链表,本篇就接着上篇继续聊链表,在单链表分析中,我们可以知道每个结点只有一个指向后
数据结构之双向链表
&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;双向链表宛如一列火车,刚发明的时候只有一个头,如果它的行驶路线为:A-&amp;amp;amp;gt;B-&amp;amp;amp;gt;C-&amp;amp;amp;gt;D-&amp;amp;amp;gt;E-&amp;
数据结构与算法——链表节点的添加与删除
会创建链表之后,添加与删除节点的操作就十分简单n这是我的程序与思路:n#include&amp;lt;stdio.h&amp;gt;nstruct noden{n int num;n node *next;n};nnode *create()n{n node *p1,*p2,*head;n head=p2=p1=new node;n scanf(&quot;%d&quot;,&amp;amp;p1-&amp;gt;nu...
c/c++ 双向链表 创建 插入 删除
同单链表的操作方法类似,不过在结点中加入了一个指向结点前驱的指针。rn#include n#include n#include n#include n#include nusing namespace std;ntypedef struct studentn{n int data;n struct student *next;n struct student *pre;n}dno
双向链表的创建、增加和删除,销毁
双向链表的创建,增加,删除和查看nnnn#include&amp;lt;stdio.h&amp;gt;n#include&amp;lt;stdlib.h&amp;gt;ntypedef struct student{n int id;n char name[20];n struct student*pre,*next;n}Student;nStudent* Create();//创建双向循环链表nvoid Pr...
双向链表的插入删除运算
#include&amp;lt;stdio.h&amp;gt;n#include&amp;lt;stdlib.h&amp;gt;n#define LEN sizeof(struct node)ntypedef int datatype;ntypedef struct noden{n    datatype data;n    struct node *next,*prior;n}dlinklist;ndlinklist *hea...
c++数据结构双链
数据结构基础之双链表对双链表的建立,插入,删除,逆序,打印元素
双链表插入 删除详解
节点结构:rnstruct both_noden{n int key;n struct both_node *prev;n struct both_node *next;n both_node(int k)n :key(k),prev(NULL),next(NULL)n {}n};rnrnrn不带头节点的双链表实现插入 删除,rn双链表n//插入nvoid insert_both(both_no
数据结构---线性表之双链表(C语言)
数据结构---线性表之双链表,创建、插入、删除,完整的C代码
C语言实现的双链表创建 、插入、删除、指定位置翻转操作的操作
以下代码都是经验证可执行,具体结果可参考 dl_print 打印信息。n代码里面对过程进行了注释便于理解nn#include &amp;amp;amp;lt;stdio.h&amp;amp;amp;gt;n#include &amp;amp;amp;lt;stdlib.h&amp;amp;amp;gt;nn//定义双向链表的节点结构ntypedef struct Node{nn int value;n struct Node *next;n struct Node *pre...
c++数据结构循环双链
数据结构基础之循环双链表对循环双链表的建立,插入,删除,逆序,打印元素
C/C++学习(九)循环双链表的操作之创建,插入、删除
双向链表n循环单链表的出现,虽然能够实现从任一结点出发沿着链能找到其前驱结点,但时间耗费是O(n)。如果希望从表中快速确定某一个结点的前驱,另一个解决方法就是在单链表的每个结点里再增加一个指向其前驱的指针域prior。这样形成的链表中就有两条方向不同的链,我们可称之为双(向)链表(Doublen Linked List)。双链表的结构定义如下:n//建立一个线性双向链表的存储结构
数据结构——循环单链表和双向链表
1.循环单链表nn1.循环单链表特点: n链表中最后一个结点的指针域不再是结束标志,而是指向整个链表的第一个结点,从而使链表形成一个环。和单链表相同,循环单链表也有带头结点和不带头结点两种。带头结点的循环单链表实现插入和删除操作较为方便,且更加适用。nn2. 单链表与循环单链表比较: n循环单链表可以从尾到头,而单链表不能从尾到头。因此处理的数据序列具有环形结构特点时,适合采用循环单链表。nn3.
【C/C++】【数据结构】双向链表操作
目录nn双向链表操作nn头文件定义nn双向链表的初始化nn双向链表的插入 nn双线链表求链表长度nn双向链表的判空nn双向链表的遍历 nn双向链表的查找(通过位置求值)nn双向链表的检索(通过值求位置)nn双向链表的删除 nn双向链表的重置nn双向链表的销毁nn测试文件nn双向链表操作nn像双向链表的求长,判空,遍历,查找,检索,之类的操作都和单链表一样的。不过我还是在了文中。nn头文件定义nnn...
数据结构链表【头插法】【尾插法】【双向链表】
我们最近学了数据结构链表中的尾插法,头插法,双向链表n链表的步骤n1.申请一个新的节点空间n2.给新的节点赋值信息域n3.修改这个节点的指针域,将节点连接起来n尾插法:顾名思义就是从节点的尾部进行插入,首先申请一个节点空间,给新的节点赋值信息域,然后修改这个n节点的指针域,写链表首先要判断头节点是否为空,第一步,如果节点为空,将新的节点地址复制给头节点,如果头节点n不为空,要定义一个尾节点。专门来...
java数据结构:双向链表结构与实现
本教程的内容基本来自于《Java数据结构与算法》nn单向链表的缺点在于每个节点只能知道自己与下一个节点,无法寻找到上一个节点。而双向链表可以解决这个问题,通过在节点内部添加一个previous指针,指向它的前一节点。nn双向链表示意图nnnn图中所示为双向链表,与单向链表相比,只不过是多引入了一个指向前一节点的previous指针而已。nn优点:支持向前遍历,也支持向后遍历; n缺点:在对链表进行
数据结构之双链表
双链表的定义和插入算法,双链表的定义,删除,插入和查找算法
双向链表的查找、删除、插入节点
双向链表前插入无需定位到节点的前一位,因为其本身有prior指针。从根本上来讲,它和单链表是类似的:#include&amp;lt;stdio.h&amp;gt;n#include&amp;lt;stdlib.h&amp;gt;ntypedef struct studentn{n int num;n struct student *next;n struct student *prior;n}LDstudent...
双链表的创建、遍历、测长、插入、删除、销毁
今天把双链表复习了一遍,双链表主要是插入和删除的 操作,两个操作的示意图如下n                  nn                                           链表的插入
双向链表添加节点和删除结点
以下是添加头节点的代码:void CList::AddHead(DATA data)n{n SNode*p = new SNode;n p-&amp;gt;data = data;n if (m_pHead)n {n m_pHead-&amp;gt;pPrev = p;n }n else {n m_pTail = p;//链表为空第一次添加节点时候才会执行这一步n }n p-&amp;gt;pPrev = nullp...
单双链表练习题
本文是关于链表的一些操作(包括单链表和双向循环链表) n1、单链表,双链表的创建。 n2、单链表和双链表的打印。 n3、单链表的插入,删除。 n4、双链表的插入和删除。 n5、单链表的逆置。 n6、单链表节点的个数。 n7、单链表,双链表的查找。 n函数代码:nnnn//链表相关问题nntypedef int DataType;ntypedef struct LinkNode //单链表结构n{
【c++版数据结构】之双链表的实现(带头结点以及尾节点)
所实现的双链表的结构如下图所示:rnrnrn双链表的实现,和第一篇文章单链表的实现大致相同点击打开链接rnrn本篇文章在构建节点的同时,初始化构建节点的前驱和后继,具体细节参考下列代码rn头文件:DList.hrn#ifndef DLIST_H_n#define DLIST_H_nntypedef enum{FALSE,TRUE}Status;n#includen#includenusing na
数据结构-双向链表
//注意双向链表中插入节点的顺序n#include&amp;lt;stdio.h&amp;gt;n#include&amp;lt;stdlib.h&amp;gt;n#include &amp;lt;stdbool.h&amp;gt;n//n typedef struct _DNoden{n int data;n struct _DNode* pre; //前驱指针n struct _DNode* next; //后继指针n}...
双向链表的插入与删除节点
#include n#include nntypedef struct linknode//定义双向链表n{n int data;n linknode *prior,*next;n} Node,*Linklist;nnLinklist Createlist(int n);//建立双向链表nvoid Addnode(Linklist L,int i,int x);//向链表中的第i个位置
数据结构系列之链表——双链表删除
(循环判断移动指针、判断相等、分头分中,不等无法删除)rndnode* del(dnode *head,int num){rn    //双链表删除值为num的节点rn    dnode *p1,*p2;rn    p1=head;rn    while(p1->data=num&& p1->next!=NULL)rn           p1=p1->next;rn    rn    if(nu
双链表 插入,删除
#include &amp;lt;stdio.h&amp;gt;nntypedef struct dnode   //节点类型定义n{ n  char data;          //节点的数据n  struct dnode *prior;//节点的前驱指针n  struct dnode *next;//节点的后继指针n}dlinklist;nnnn//双链表插入nint d_list_insert(dlink...
数据结构——双向循环链表头插法创建链表
#include&amp;lt;stdio.h&amp;gt;#include&amp;lt;stdlib.h&amp;gt;typedef struct dnode{ int id; struct dnode * next; struct dnode * prior;}dnode,*dbllist,*dblnode;int Initlist(dbllist *L){ *L=(dbllist)malloc(sizeof(dnod...
【数据结构】循环双向链表定义和基本操作
循环双向链表:nn循环双向链表的定义:nnntypedef struct CDLNode{n LElemType data;n struct CDLNode * pre;n struct CDLNode * next;n CDLNode(LElemType Data=0,struct CDLNode* Pre=NULL,struct CDLNode* Next=NULL){...
数据结构---双向链表的实现
n#include &amp;lt;stdio.h&amp;gt;n#include &amp;lt;stdlib.h&amp;gt;n#include &quot;DLinkList.h&quot;n/* run this program using the console pauser or add your own getch, system(&quot;pause&quot;) or input loop */nstruct valuen{n DLinkLis...
C语言 双链表 插入/删除/查找/遍历/递归/合并/排序
       双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。nn1 双链表数据结构nnnn1.1 新增节点图解nnnn1.2 删除一个节点图解nnnn2 双链表操作nn         双链表和单链表在操作主要区别在于插入和删除,双链表需要修改...
双向链表的功能实现:初始化,插入,按位置插入,按位置删除,按值删除,遍历打印等
#includern#include rn#define F -1rntypedef struct Node* node;rnstruct Nodern{rnnode prior;rnnode next;rnint value;rn};rnint init(node *head);                                          //初始化rnint insert
链表的概念以及原理 插入和删除元素
链表的概念以及原理 插入和删除元素
双向循环链表的插入与删除
关于解释部分不再多说了,网上资料很多,下面就介绍具体的实现吧rnrnrn//双向循环链表的插入与删除rntypedef struct node{rn    int data;rn    struct node *prev, *next;rn}DNode, *DLinkList;rnrnrn//在带有头结点双向循环链表中第1个数据域内容为x的结点右边插入一个数据信息为item的新结点rnvoid i
【数据结构】带有头结点的双向循环链表的基本操作
  本篇主要实现了带有头结点的双向循环链表的基本操作,其中包括增删改查以及清空销毁、判空、求结点个数等等。nn头文件nnDoubleLinkList.hnnn# ifndef __DOUBLELINKLIST_H__n# define __DOUBLELINKLIST_H__nn# include &amp;lt;stdio.h&amp;gt;n# include &amp;lt;assert.h&amp;gt;n# inclu...
双向链表添加和删除 java
为了更好地理解双向链表,先说几个相关的概念nList:特性:必须按照插入的顺序来保存元素n第一种实现:最常用的arrylist:结构类似于数组,所以访问元素的时候可以直接通过索引来访问任何位置的数据,但是当插入元素的时候默认是追加到数组的最后,那么数组当中原有的元素的位置不变 只是申请开辟了一块内存空间和新增加了一个索引,其他都没有变化,但是当向其他位置插入元素的时候,会先申请开辟一块内存空间和一...
串的(插入、删除、截取)结构演示程序(C++)
串的(插入、删除、截取)结构演示程序,数据结构试验,如果没有积分可以联系
带头节点的双向循环链表基本操作 --- (尾插,尾删,查找节点,指定位置插入,指定位置删除)
链表分为单向链表和双向链表,前两篇都是关于单向链表的函数,这篇是有关双向循环链表的函数,nn首先,我们我要知道双向循环链表长什么样子nnnn双向循环链表结构体:nnnntypedef int DataType;nntypedef struct DListNode {n struct DListNode* _pNext;n struct DListNode* _pPre;n Dat...
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 java大佬的学习经验 java大佬学习技术