c、c++链表的删除

#include<iostream>
#include<conio.h>
using namespace std;
struct Node
{
float num;
Node *next;
};
/*该创建函数节点从链首插入,开始形成的指针向后移动逐渐向链尾移动*/
Node *createlist()//指针函数,返回值是Node类型的头指针
{
Node *p,*head;
char ch;
head=NULL;
cout<<"创建链表节点吗?(Y/N)"<<endl;
cin>>ch;
while(ch=='Y')
{
p=new Node;
cout<<"请输入值:";
cin>>p->num;
p->next = head;//先把p的下一个地址指向head;
head=p;//把新节点的地址给head;
cout<<"是否继续输入值?(Y/N)"<<endl;
cin>>ch;
}
return (head);
}
void printflist(Node *p)
{
int i=0;
while(p!=NULL)
{
cout<<"输出第"<<++i<<"个节点的值:"<<p->num<<endl;
p=p->next;}
}
Node *deleteList(Node *head)
{
  Node *p1,*p2,*q1,*q2;
  p1=new Node;
  p2=new Node;
  q1=new Node;
  q2=new Node;
  p1=head;
  q1=head;
  while(p1!=NULL)
  {
 if((p1->num)<(q1->num))
 {q1=p1;
  q2=p2;}
  p2=p1;//p2->next=p1;
  p1=p1->next;
  }
  if(q1!=head)
  {q2->next=q1->next;
  delete q1;}
  if(q1==head)
  {head=head->next;
  delete q1;}
  return head;
}
int main()
{
Node *p;
p=createlist();
printflist(p);
p=deleteList(p);
printflist(p);
return 0;
}
阅读更多
文章标签: 链表的删除 c++、c
个人分类: c/c++
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭