C语言单链表中删除所有值为a的元素

C语言单链表中删除所有值为a的元素要怎么删除啊?整个链表中都是char的值,然后要删除所有值为a的元素。我编了半天一直出错求高手指点!!谢谢!... C语言单链表中删除所有值为a的元素 要怎么删除啊?
整个链表中都是char的值,然后要删除所有值为a的元素。
我编了半天一直出错
求高手指点!!
谢谢!
展开
 我来答
炫心吾动之夜爱
2011-09-25 · TA获得超过379个赞
知道小有建树答主
回答量:168
采纳率:0%
帮助的人:64.4万
展开全部
void deleteL(LinkNode *head,char a)//此链表假定带头结点,否则还要加一条对第一个结点的操作。LinkNode为定义的链表类型,a为指定的要删除的字符。
{
ListNode *p,*q;
p=head;
while (p->next!=NULL)
{if (p->next->data==a)
{q=p->next;
p->next=p->next->next;//删除指定的字符
free(q);
else
p=p->next;//不删除,只是指针后移
}
}
舒心还飒爽丶彩旗x
2011-09-25 · TA获得超过1545个赞
知道小有建树答主
回答量:1594
采纳率:75%
帮助的人:748万
展开全部
#include<iostream>
using namespace std;

typedef struct LNode
{
char data;
struct LNode *next;
}LNode,*LinkList;

void create(LinkList *L);
void print(LinkList L);
void del(LinkList *L, char a);

int main()
{
LinkList L;

create(&L);
print(L);

del(&L, 'b');
print(L);

system("pause");
return 0;
}

void create(LinkList *L)
{
int n;
*L = new LNode;
(*L)->next = NULL;
cout<<"input a number:";
cin>>n;
LinkList node,fnode;
node = fnode = *L;
for(int i = 0; i < n; i++)
{
node = new LNode;
cin>>node->data;
node->next = NULL;
fnode->next = node;
fnode = node;
}
}

void print(LinkList L)
{
if(L->next == NULL)
cout<<"Empty List"<<endl;
else
{
LinkList p = L->next;
while(p)
{
cout<< p->data <<" ";
p = p->next;
}
}
cout<<endl;
}

void del(LinkList *L, char a)
{
LinkList node,fnode;
fnode = *L;
node = (*L)->next;
while(node != NULL)
{
if(node->data == a)
{
fnode->next = node->next;
delete node;
node = fnode->next;
cout<<"delete successfully"<<endl;
}else
{
fnode = node;
node = node->next;
}
}
if(node)
{
fnode->next = node->next;
delete node;
cout<<"delete successfully"<<endl;
}
else
cout<<"can not delete"<<endl;
}

在visual studio 2008里成功运行了。的
更多追问追答
追问
我的结构体是这样定义的:
typedef struct node
{
char value;
struct node *nPtr;
}nodePtr,*listNodePtr;
然后我的函数是 void insert(listNodePtr *ptr,char a),变量声明是listNodePtr *link(不知道能不能这样定义头结点,因为第一次用链表),然后我参数传递的时候用的是(&link,b)
这样为什么不行啊?VC2010和GCC都运行不了 说这里有错误
求指点!谢谢~~~~
追答
b是个变量吗?
(&link,'b')
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式