作业帮 > 综合 > 作业

(C语言,数据结构)判别一个数是否在序列中,在,就删除,不在,输出NO

来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/18 21:13:14
(C语言,数据结构)判别一个数是否在序列中,在,就删除,不在,输出NO
设有一有序序列,从键盘输入一个数,判别是否在序列中,如果不在输出“NO”,否则,将它从序列中删除它,并输出删除后的序列.
(C语言,数据结构)判别一个数是否在序列中,在,就删除,不在,输出NO
 #include<iostream>
using namespace std;
struct node
{
 int date;
 node *next;
};
typedef node *link;
int main()
{
 int n;
 int num_[8] = {1,2,3,4,5,6,7,8};
 //建立链表
 link p,q;
 link head = new node;
 head->date = num_[0];
 head->next = NULL;
 p = head;
 for(int i = 1; i<8; i++)
 {
  q = new node;
  q->date = num_[i];
  q->next = NULL;
  p->next = q;
  p = q;
 }
 p = head;
 while(p!=NULL)
 {
  cout<<p->date<<ends;
  p = p->next;
 }
 cout<<endl<<"输入要删除的数"<<endl;
 while(scanf("%d",&n)!=EOF)
 {  
     bool flag = false;
  p = head;
  if(head->date == n)
  {
   flag = true;
   head = p->next;
   p = head;
   cout<<"输出新的序列: ";
   while(p != NULL)
   {
    cout<<p->date<<ends;
    p = p->next;
   }
   cout<<endl;
  }
  else
  {
   q = p;
   while(q->next != NULL)
   {  
    q = p->next;
    if(q->date == n)
    {
     flag = true;
     p->next = q->next;
     p = head;
     cout<<"输出新的序列: ";
     while(p != NULL)
     {
      cout<<p->date<<ends;
      p = p->next;
     }
     cout<<endl;
     break;
    }
    p = q;
   }
  }
  if(flag == false)
   cout<<"NO"<<endl;
  cout<<"输入要删除的数"<<endl;
 }
 system("pause");
 return 0;
}