链表相关问题。。1是删除,当删除头节点的时候,会出现死循环 2插入代码写好,但是没有实现插入的功能

问题描述

链表相关问题。。1是删除,当删除头节点的时候,会出现死循环 2插入代码写好,但是没有实现插入的功能
int main()
{
int i = 0;
int place = 0;
int nodeData;
char c;
struct Link *head = NULL;//指向链表头
printf(""Do you want to append a new node(Y/N)"");
scanf("" %c""&c);
while(c=='Y' || c=='y')
{
head = AppendNode(head);
DispLink(head);//显示当前各节点信息
printf(""Do you want to append a new node(Y/N)"");
scanf("" %c""&c);
i++;
}
printf(""%d new nodes have been appended!n""i);
printf(""please input the nodeData you want to delete:"");
scanf(""%d""&nodeData);
DeleteNode(headnodeData);
DispLink(head);
printf(""please input the nodeData you want to insert:"");
scanf(""%d""&nodeData);
printf(""输入插入的位置"");
scanf(""%d""&place);
InsertNode01(headnodeDataplace);
DispLink(head);
//InsertNode(headnodeData);

//DeleteMemory(head);//释放分配内存return 0;

}

struct Link *DeleteNode(struct Link *headint nodeData)//链表的删除
{
struct Link *p = head*pr = head;
if (head == NULL)//首先需要判断链表是否为空!若空!无需执行删除操作!
{
printf(""No Linked Table!n"");
return(head);
}
while(nodeData != p->data && p->next != NULL)//若没找到nodeData且未到表尾,则继续找!
{
pr = p;
p = p->next;
}
if (nodeData == p->data)
{
if(p == head)//判断是否删除首节点
{
head = p->next;//
}
else
{
pr->next = p->next;
}
free(p);
}
else
{
printf(""this Node has not been found!"");
}
return head;

struct Link *InsertNode01(struct Link *headint nodeDataint i)
{ int j=1;

struct Link *pr = head *p *temp = NULL;
p = (struct Link *)malloc(sizeof(struct Link));
if(p == NULL)
{
printf(""NO enough memory"");
exit(0);
}
p->next = NULL;//置新节点的指针域为空
p->data = nodeData;//为新节点赋数据域的值
if(head == NULL)//插入新节点前,对原链表的一个判断,不同情况插入的方法不同
{
head = p;
}
else
{ if(i = 1)
{
p->next = head;
head = p;

    }    else    {  while(j < i && pr->next != NULL)       {           temp = pr;           pr = pr->next;           j++;       }       if(j = i)       {            pr = temp;            p->next = pr->next;            pr->next = p;       }       else       {           pr -> next = p;       }    }}

return(head);

};


解决方案

DeleteNode(headnodeData);
DispLink(head);

删除头后,头指针没有移动,在disp还是删除的头的信息。

InsertNode01(headnodeDataplace);
DispLink(head);
中间位置应该可以插入成功,但是头还是有没有指向新的头。

时间: 2024-08-21 17:02:34

链表相关问题。。1是删除,当删除头节点的时候,会出现死循环 2插入代码写好,但是没有实现插入的功能的相关文章

链表的删除操作,删除头节点就会出问题 大家看看问题出在哪里呢

问题描述 链表的删除操作,删除头节点就会出问题 大家看看问题出在哪里呢 struct Link *DeleteNode(struct Link *head,int nodeData)//链表的删除 { struct Link *p = head,*pr = head; if (head == NULL)//首先需要判断链表是否为空!若空!无需执行删除操作! { printf("No Linked Table!n"); return(head); } while(nodeData !=

jq实现左滑显示删除按钮,点击删除实现删除数据功能(推荐)_jquery

效果图 第一步:加载 <script src="js/jquery.min.js"></script> <script src="js/jquery.mobile-1.3.2.min.js"></script> 第二步:html <div class="item-wrap"> <div class="item clearfix"> <div clas

sql drop用法删除表,删除数据库,删除索引

下面我们来看看我们常用的drop 函数吧,这是在mysql mssql access里面用来删除sql drop用法删除表,删除数据库,删除索引哦面我们来一一步例子吧. drop index 删除索引 access删除索引:DROP INDEX index_name ON table_name mssql删除索引:DROP INDEX table_name.index_name mysql删除索引:ALTER TABLE table_name DROP INDEX index_name DB2/

horizontalscrollview-使用HorizontalScrollView实现的ListView左滑删除,删除操作区域为什么还在?

问题描述 使用HorizontalScrollView实现的ListView左滑删除,删除操作区域为什么还在? 使用HorizontalScrollView实现的ListView左滑删除,删除操作区域为什么还在? 下面是个Demo,可以直接运行,试试效果. 我的问题是:为什么点击删除按钮,删除该Item后,这个操作区域还在.不是已经删除了item吗,在item布局里的操作区域,也应该消失啊,为什么还在呢.是哪里来的? 求解啊! Demo下载地址:http://pan.baidu.com/s/1p

C#中listview加载的图片,批量删除时出现异常“文件被另一个程序使用”,具体代码如下

问题描述 C#中listview加载的图片,批量删除时出现异常"文件被另一个程序使用",具体代码如下 自动加载图片: private void FrmPicListView_Load(object sender EventArgs e) { listView1.View = View.LargeIcon; listView1.MultiSelect = true; string[] files = GetImages(); if (files != null) { ImageList

怎么点击删除按钮删除textbox 同时也删除buttton按钮,都是动态添加的!

问题描述 怎么点击删除按钮删除textbox 同时也删除buttton按钮,都是动态添加的! 解决方案 C#的话 this.Controls.Remove(button1); this.Controls.Remove(textBox1);

如何用jquery实现点击“删除”行删除后,选项重新排列;

问题描述 如何用jquery实现点击"删除"行删除后,选项重新排列: 如何用jquery实现点击"删除"行删除后,选项重新排列: 例我增加到10行后,我点击删除选项5,剩下的行按1-9重新排列 <script> function add(){ var val = $('#limit').val(); var lastInput = $('#contain input:last'); var phName = lastInput.attr('placeho

android-Android 应用中的EditText只能输入字符,软键盘的删除不能删除输入的字符

问题描述 Android 应用中的EditText只能输入字符,软键盘的删除不能删除输入的字符 第一个布局 其中的EditText 能正常输入所限制的东西. <?xml version="1.0" encoding="utf-8"?> ??? android:layout_width="fill_parent" ??? android:layout_height="fill_parent" ??? android:

新闻内容里的图片删除怎么删除

问题描述 新闻内容里的图片删除怎么删除 解决方案 问题要描述清楚啊,要不怎么解决呢?