单链表中结点的删除
在单链表输入学号和姓名,按学号从小到大存放到结点中,暂时有插入和删除结点的功能。插入功能正常使用,删除功能无法显示,代码如下:
typedef struct node
{
int data;//数据域,存放学号和姓名
char str[20];//存放姓名
struct node *next;//指针域
} Node,*pnode; //Node等价于struct node,pnode等价于struct node *
//主函数中关于删除功能的语句
printf("请输入将要删除的结点的姓名:");
gets(str);
head=delete_list(head,str);
//单链表中结点的删除
pnode delete_list(pnode head,char *pster)
{
pnode p,temp;//定义temp来与输入的姓名来做比较
temp=head;
if(temp->next==NULL)
printf("单链表为空!\n");
else
{
while(strcmp(temp->str,pster)!=0&&temp->next!=NULL)
//通过while语句来找到与输入的姓名相同的结点
{
p=temp;
temp=temp->next;
}
if(strcmp(temp->str,pster)==0)------------------------------------------1
{
if(temp==head)
{
head=head->next;
free(temp);
}
else
{
p->next=temp->next;
free(temp);-----------------------------------------------------2
}
}
else
printf("没有发现要删除的姓名!\n");
}
return head;
}
从1-2这里代码没走过。。