#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')
追问b是我输入的char变量,我用了&link vc2010就在&下面划了横线,gcc也是这里运行不出
追答link要是 listNodePtr 类型的