امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
حذف گره در لیست پیوندی
نویسنده پیام
aleas آفلاین
کاربر با تجربه
****

ارسال‌ها: 911
موضوع‌ها: 183
تاریخ عضویت: مهر ۱۳۸۹

تشکرها : 2946
( 2592 تشکر در 1223 ارسال )
ارسال: #1
حذف گره در لیست پیوندی
سلام خسته نباشید دوستان این کد قسمت حذف گره از لیست پیوندی هسته ولی درست عمل نمیکنه کسی میدونه مشکلش چی؟

کد:
class node

{

    char name[30];

    char lname[50];

    long numhasab;

    long Money;

    node *next;

    friend class hasab;

};//



class hasab{

    node *head;

    public:

  void load();

        void add_hasab();

        void mande_hasab(char[30] ,char[50] ,long &,long  &,int &);

        void bardasht_hasab();

        void delete_hasab();

};









void hasab::delete_hasab()////////حذف حساب

{



     int taed;int chek;

     long i=0;long numhasab;

         node *cur;node *del;

    cur=head;

     cout<<endl<<"Enter Number Hasab : ";

    

         cin>>numhasab;

  while(cur!=NULL)

    {

     i++;            

                  if(cur->numhasab=numhasab)

                  {chek=1 ; break;}

    

        cur=cur->next;

    }    

  if (chek==1 )

  {



       cout<<"in hasab mojod mibasha ba     Name : " << cur->name << "  " << cur->lname << "  Mandeh hasab " << cur->Money ;            

       cout<<endl<<"motman hastid hasb hzf shvad taed 1 : ";      

       cin >>taed;

       if (taed==1)

       {

             del=cur;

             cur=cur->next;

             del->next=NULL;

             delete del;

            

                   cout<<"Yes delete hasab";

       }

              

          }

else

cout<<"No hasab";

     }////////////////

ما کرم درختان پر باریم در حسرت سیبی سرخ و چه بس دور است بین ما ، دستانمان را ميگويم و سيب سرخ حوا
۰۷-اسفند-۱۳۹۱, ۰۰:۱۵:۰۸
وب سایت ارسال‌ها
پاسخ
mohamadpk آفلاین
در حال پیشرفت
***

ارسال‌ها: 337
موضوع‌ها: 39
تاریخ عضویت: اردیبهشت ۱۳۸۷

تشکرها : 726
( 661 تشکر در 257 ارسال )
ارسال: #2
RE: حذف گره در لیست پیوندی
تو حذف شما سه حالت داری
یک اول لیست
دو وسط لیست
سه آخر لیست

برای اول این کلی میشه
کد:
NodeDel=NodeCur;
NodeCur=NoddeCur->next;
detele NodeDel;
که یعنی نود اول رو نگه داری میکنی تو یه تمپ بعد اون رو مساوی با نود بعدی میکنی . بعد تمپ رو پاک می کنی

برای وسط این شکلی میشه باید موقع سرچت یکی مونده به NodeCur رو هم نگه داری کنی.اول نود cur رو کپی کنی تو تمپ بعد نود قبل از cur رو وصل کنی به cur ->next بعد. تمپ رو پاک کنی

برای آخر هم باید نود cur رو بریزی تو تمپ و بعد نود یکی مونده به آخر next اون رو نال کنی

اینم یه نمونه نگاه کن
کد:
#include <iostream>

using namespace std;

class linklist
{
     private:

             struct node
         {
              int data;
            node *link;
         }*p;

   public:

             linklist();
         void append( int num );
         void add_as_first( int num );
         void addafter( int c, int num );
         void del( int num );
         void display();
         int count();
         ~linklist();
};

linklist::linklist()
{
     p=NULL;
}

void linklist::append(int num)
{
     node *q,*t;

   if( p == NULL )
   {
        p = new node;
      p->data = num;
      p->link = NULL;
   }
   else
   {
        q = p;
      while( q->link != NULL )
           q = q->link;

      t = new node;
      t->data = num;
      t->link = NULL;
      q->link = t;
   }
}

void linklist::add_as_first(int num)
{
     node *q;

   q = new node;
   q->data = num;
   q->link = p;
   p = q;
}

void linklist::addafter( int c, int num)
{
     node *q,*t;
   int i;
   for(i=0,q=p;i<c;i++)
   {
        q = q->link;
      if( q == NULL )
      {
           cout<<"\nThere are less than "<<c<<" elements.";
         return;
      }
   }

   t = new node;
   t->data = num;
   t->link = q->link;
   q->link = t;
}

void linklist::del( int num )
{
     node *q,*r;
   q = p;
   if( q->data == num )
   {
        p = q->link;
      delete q;
      return;
   }

   r = q;
   while( q!=NULL )
   {
        if( q->data == num )
      {
           r->link = q->link;
         delete q;
         return;
      }

      r = q;
      q = q->link;
   }
   cout<<"\nElement "<<num<<" not Found.";
}

void linklist::display()
{
     node *q;
   cout<<endl;

   for( q = p ; q != NULL ; q = q->link )
        cout<<endl<<q->data;

}

int linklist::count()
{
     node *q;
   int c=0;
   for( q=p ; q != NULL ; q = q->link )
        c++;

   return c;
}

linklist::~linklist()
{
     node *q;
   if( p == NULL )
        return;

   while( p != NULL )
   {
        q = p->link;
      delete p;
      p = q;
   }
}

int main()
{
     linklist ll;
   cout<<"No. of elements = "<<ll.count();
   ll.append(12);
   ll.append(13);
   ll.append(23);
   ll.append(43);
   ll.append(44);
   ll.append(50);

   ll.add_as_first(2);
   ll.add_as_first(1);

   ll.addafter(3,333);
   ll.addafter(6,666);

   ll.display();
   cout<<"\nNo. of elements = "<<ll.count();

   ll.del(333);
   ll.del(12);
   ll.del(98);
   cout<<"\nNo. of elements = "<<ll.count();
   return 0;
}

وطنم ای عشق همیشگی من ایران زمین

شقایق ها گل میکنن دوباره عاشق میشن...........قصه عشق وطن رو به غنچه هاشون میگن


(آخرین ویرایش در این ارسال: ۰۹-اسفند-۱۳۹۱, ۱۹:۰۶:۴۰، توسط mohamadpk.)
۰۹-اسفند-۱۳۹۱, ۱۸:۵۴:۵۴
ارسال‌ها
پاسخ
The.Ghost غایب
مدیر بازنشسته
*****

ارسال‌ها: 461
موضوع‌ها: 201
تاریخ عضویت: مهر ۱۳۸۸

تشکرها : 674
( 354 تشکر در 158 ارسال )
ارسال: #3
RE: حذف گره در لیست پیوندی
کد:
----------------------------  طراحي پشته با ليست پيوندي  -----------------------

#include <iostream.h>
#include <conio.h>

struct node
{
   char token;
   node *link;
}*top=NULL;

void push(char x)
{
  node *temp=new node;
  temp->token=x;
  temp->link=top;
  top=temp;
}

char pop()
{
  node *temp=top;
  char x;
  if(top==NULL) return 0;
  top=top->link;
  x=temp->token;
  delete temp;
  return x;
}

int check(char s[])
{
  for(int i=0;s[i]!=NULL;i++)
  {
    if(s[i]=='(' || s[i]=='{')
       push(s[i]);
    else
    if(s[i]==')' && pop()!='(')
     return 0;
     else if(s[i]=='}' && pop()!='{')
      return 0;
  }
  if(top!=NULL)
    return 0;
  return 1;
}
main()
{
  char str[50];
  cin>>str;
  if(check(str))
    cout<<"correct";
  else
    cout<<"wrong";
}

Assembly Language 039

۱۱-اسفند-۱۳۹۱, ۱۹:۱۷:۴۴
ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
Question تبدیل infix به postfix به وسیله لیست پیوندی zohreh.ma 3 3,813 ۱۳-اردیبهشت-۱۳۹۵, ۱۵:۱۷:۵۶
آخرین ارسال: hartan
  جمع چند جمله ای ها با لیست پیوندی؟ Sadie 9 21,750 ۱۴-مهر-۱۳۹۰, ۲۱:۰۲:۴۷
آخرین ارسال: exepainiDic
  ویرایش لیست های یک پیوندی dawn 0 1,922 ۱۱-دى-۱۳۸۷, ۱۹:۵۳:۴۸
آخرین ارسال: dawn
  لیست کنتزل marvel_vcpp 0 1,761 ۱۸-مهر-۱۳۸۵, ۱۴:۴۴:۴۲
آخرین ارسال: marvel_vcpp

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS