Windows Việt

Cộng Đồng Công Nghệ Thông Tin Việt

Trang ChínhTrang Chính  Sự kiện  Tìm kiếmTìm kiếm  Đăng kýĐăng ký  Đăng NhậpĐăng Nhập  

Share
 
 đệ mắc lỗi gì đây vậy các huynh ?
Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down 
Tác giảThông điệp
phanvăntàiem
Member

phanvăntàiem
Member
Giới tính : Nam
Tuổi : 26
Posts Posts : 4
Coins Coins : 8
Thanked Thanked : 0
đệ mắc lỗi gì đây vậy các huynh ? Empty

Code:

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>


typedef struct sinhvien
{
    char hoten[50];
    int namsinh;
    char que[25];
    char masv[10];
    struct sinhvien* next;
}sv;

void taoSV(sv*&,sv*);
void bosung(sv*&,sv*);
void In(sv*);


void main()
{
  sv*f,*p;f=NULL;
  clrscr();
  taoSV(f,p);
  In(f);
  getch();
}

void taoSV(sv*&first,sv*moi)
{
  moi=(sv*)calloc(1,sizeof(sv));
  moi->next=NULL;
  printf("\nnhap thong tin cua sinh vien:");
  printf("\nnhap ho ten :");
  gets(moi->hoten);
  printf("\nnhap nam sinh :");
  scanf("%d",moi->namsinh);
  fflush(stdin);
  printf("\nnhap que quan :");
  gets(moi->que);
  printf("\nnhap ma so sinh vien :");
  gets(moi->masv);

  bosung(first,moi);
}

void bosung(sv*&f,sv*p)
{
  int i,co,dem;co=0;dem=0;
  sv*q,*last; q=f;

  do
  {
      printf("\ncho biet vi tri bo sung :");
      scanf("%d",&i);
  }while(i<0);

  if(i==0)
  {
      p->next=q;
      f=p;
      co=1;
  }
  else
  {
      while(q->next!=NULL&&dem!=i)
      {
      last=q;
      q=q->next;
      ++dem;
      }
      if(q->next==NULL&&dem!=i)
      {
      printf("\nkhong tim thay vi tri thu %d",i);
      printf("\ndanh sach hien co %d sinh vien",dem);
      }
      else if(q->next==NULL&&dem==i)
      {
          q->next=p;
          p->next=NULL;
          co=1;
      }
      else if(q->next!=NULL&&dem==i)
        {
          p->next=q;
          last->next=p;
          co=1;
        }
  }

  if(co==1)
      printf("\nbo sung thanh cong");
  else
      printf("\nkhong tim thay vi tri bo sung thich hop");
}

void In(sv*f)
{
  sv*p;p=f;int d=1;
  while(p->next!=NULL)
  {
      printf("\nsinh vien %d :",d);
      printf("\nMa So :");
      printf("\nHo Ten :");
      printf("\nNam Sinh :");
      printf("\nQue Quan :");
      ++d;
  }
}

※ Bài viết cùng chuyên mục


Tác giảThông điệp
daokiem_votinh64
Member

daokiem_votinh64
Member
Giới tính : Nam
Tuổi : 31
Posts Posts : 556
Coins Coins : 2157
Thanked Thanked : 168
đệ mắc lỗi gì đây vậy các huynh ? Empty

Bạn biên dịch bằng Visual C++ 6.0 đúng không.bị lỗi là cái lênh clrscr(); đó.lệnh này có tác dụng trong Borland C thui.còn 1 cái warning là giá trị của con trỏ p chưa dc khởi gán giá tị ban đầu đấy.Cái này là danh sách liên kết đơn đúng không?.sao bạn không viết hẳn ra 1 hàm để khởi tạo giá trị ban đầu cho các node nhỉ.Về cái này thì bạn nên đọc sách của Thầy Dương Anh Đức sẽ hiểu rõ hơn đấy.

Thân

※ Bài viết cùng chuyên mục


Tác giảThông điệp
daokiem_votinh64
Member

daokiem_votinh64
Member
Giới tính : Nam
Tuổi : 31
Posts Posts : 556
Coins Coins : 2157
Thanked Thanked : 168
đệ mắc lỗi gì đây vậy các huynh ? Empty

Code:
scanf("%d",&moi->namsinh);
thiếu dấu "&" trong câu này nữa.
Hàm bosung của bạn có lỗi khá nhiều đó.bạn có thể tham khảo source dưới đây hen

Code:
#include "stdio.h"
#include "conio.h"
struct NODE
{
 int number;
 NODE *pnext;
};
struct LIST
{
 NODE *phead;
 NODE *ptail;
};
void khoitao(LIST &l)
{
 l.phead=NULL;
 l.ptail=NULL;
}
NODE *createnode(int x)
{
 NODE *p;
 p=new NODE;
 if(p==NULL)
  return NULL;
 p->number=x;
 p->pnext=NULL;
 return p;
}
void addhead(LIST &l,NODE *newnode)
{
 if(l.phead==NULL)
 {
  l.phead=newnode;
  l.ptail=l.phead;
 }
 else
 {
  newnode->pnext=l.phead;
  l.phead=newnode;
 }
}
void addtail(LIST &l,NODE *newnode)
{
 if(l.phead==NULL)
 {
  l.phead=newnode;
  l.ptail=l.phead;
 }
 else
 {
  l.ptail->pnext=newnode;
  l.ptail=newnode;
 }
}
void insertafter(LIST &l,NODE *p,NODE *q)
{
 if(l.phead==NULL)
 {
  l.phead=p;
  l.ptail=l.phead;
 }
 else
 {
  if(q->number==l.ptail->number)
  {
  l.ptail->pnext=p;
  l.ptail=p;
  }
  else
  {
  p->pnext=q->pnext;
  q->pnext=p; 
  }
 }
}
void insertbefore(LIST &l,NODE *p,NODE *q)
{
 if(l.phead==NULL)
 {
  l.phead=p;
  l.ptail=l.phead;
 }
 else
 {
  if(l.phead->number==q->number)
  {
  p->pnext=l.phead;
  l.phead=p;
  }
  else
  {
  NODE *pnode=l.phead;
  while(pnode->pnext!=q)
    pnode=pnode->pnext;
  p->pnext=pnode->pnext;
  pnode->pnext=p;
  }
 }
}
NODE *search(LIST l,int k)
{
 NODE *p;
 for(p=l.phead;p!=NULL;p=p->pnext)
  if(p->number==k)
  return p;
 return 0;
}
void removehead(LIST &l)
{
 if(l.phead==NULL)
  l.ptail=NULL;
 NODE *temp=l.phead;
 l.phead=l.phead->pnext;
 delete temp;
}
void removetail(LIST &l)
{
 NODE *p=l.phead;
 while(p->pnext!=l.ptail)
  p=p->pnext;
 NODE *temp=l.ptail;
 l.ptail=p;
 l.ptail->pnext=NULL;
 delete temp;
}
void removeafter(LIST &l,NODE *p)
{
 NODE *pnode=l.phead;
 while(pnode->pnext!=l.ptail)
  pnode=pnode->pnext;
 if(l.phead==NULL)
  l.ptail=NULL;
 else
 {
  if(p->number==l.phead->number)
  {
  NODE *temp=l.phead->pnext;
  l.phead->pnext=temp->pnext;
  delete temp;
  }
  if(p->number==l.ptail->number)
  printf("khong co node dung sau %d nen khong xoa dc \n",p->number);
  if(p->number==pnode->number)
  removetail(l);
  if(p->number!=l.phead->number && p->number!=l.ptail->number && p->number!=pnode->number)
  {
  NODE *temp=p->pnext;
  p->pnext=temp->pnext;
  delete temp;
  }
 }
}
void removebefore(LIST &l,NODE *p)
{
 if(l.phead==NULL)
  l.ptail=NULL;
 else
 {
  if(p->number==l.phead->number)
  printf("khong co node nao dung truoc %d nen khong xoa duoc \n",p->number);
  if(p->number==l.phead->pnext->number)
  removehead(l);
  if(p->number!=l.phead->number && p->number!=l.phead->pnext->number)
  {
  NODE *pnode=l.phead;
  while(pnode->pnext->pnext!=p)
    pnode=pnode->pnext;
  removeafter(l,pnode);
  }
 }
}
void removelist(LIST &l)
{
 NODE *p;
 while(l.phead!=NULL)
 {
  p=l.phead;
  l.phead=p->pnext;
  delete p;
 }
 l.ptail=NULL;
}
void output(LIST l)
{
 for(NODE *p=l.phead;p!=NULL;p=p->pnext)
  printf("%4d",p->number);
}
void input(LIST &l)
{
 int n;
 printf("nhap vao so node ");
 scanf("%d",&n);
 khoitao(l);
 for(int i=1;i<=n;i++)
 {
  int number;
  printf("nhap vao gia tri cua node %d :",i);
  scanf("%d",&number);
  NODE *p=createnode(number);
  addhead(l,p);
 }
 
}
void main()
{
 LIST l;
 input(l);
 output(l);
 //chen vao cuoi danh sach
 int number1;
 printf("\nnhap vao gia tri cua node can chen cuoi :");
 scanf("%d",&number1);
 NODE *p=createnode(number1);
 addtail(l,p);
 printf("danh sach sau khi chen node %d la \n",number1);
 output(l);
 //chen node p vao sau node q
 int number2,t,flag=0;
 printf("\n\nnhap vao gia tri cua node can chen sau");
 scanf("%d",&number2);
 NODE *p1=createnode(number2);
 printf("nhap vao gia tri cua node dung truoc ");
 scanf("%d",&t);
 for(NODE *pnode=l.phead;pnode!=NULL;pnode=pnode->pnext)
  if(pnode->number==t)
  flag=1;
 if(flag==1)
 {
  printf("danh sach sau khi chen node %d la \n",number2);
  for(pnode=l.phead;pnode!=NULL;pnode=pnode->pnext)
  if(pnode->number==t)
  { 
    insertafter(l,p1,pnode);
    output(l);
    break;
  }
 }
 if(flag==0)
  printf("khong co %d trong danh sach lien ket nen khong chen duoc ",t);
 //chen node p vao truoc node q
 int number3,t1,flag1=0;
 printf("\n\nnhap vao gia tri cua node can chen truoc");
 scanf("%d",&number3);
 NODE *p2=createnode(number3);
 printf("nhap vao gia tri cua node dung sau ");
 scanf("%d",&t1);
 for(pnode=l.phead;pnode!=NULL;pnode=pnode->pnext)
  if(pnode->number==t1)
  flag1=1;
 if(flag1==1)
 {
  printf("danh sach sau khi chen node %d la \n",number3);
  for(pnode=l.phead;pnode!=NULL;pnode=pnode->pnext)
  if(pnode->number==t1)
  { 
    insertbefore(l,p2,pnode);
    output(l);
    break;
  }
 }
 if(flag1==0)
  printf("khong co %d trong danh sach lien ket nen khong chen duoc ",t1);
 //tin node
 int number4;
 printf("\nnhap vao gia tri cua node muon tim kiem");
 scanf("%d",&number4);
 NODE *kq=search(l,number4);
 if(kq==0)
  printf("khong co node co gia tri %d can tim ",number4);
 else
  printf("node %d co trong danh sach lien ket",kq->number);
 //xoa node dau
 printf("\n\n danh sach lien ket sau khi xoa node dau \n");
 removehead(l);
 output(l);
 
 //xoa phan tu dung sau node p
 int number5,flag2=0;
 printf("\nnhap vao gia tri cua node dung truoc node can xoa ");
 scanf("%d",&number5);
 for(pnode=l.phead;pnode!=NULL;pnode=pnode->pnext)
  if(pnode->number==number5)
  flag2=1;
 if(flag2==1)
 {
  printf("\ndanh sach lien ket sau khi xoa node dung sau %d la \n",number5);
  for(pnode=l.phead;pnode!=NULL;pnode=pnode->pnext)
  if(pnode->number==number5)
  {
    removeafter(l,pnode);
    output(l);
  }
 }
 if(flag2==0)
  printf("khong co %d trong danh sach lien ket nen khong xoa duoc",number5);
 //xoa phan tu dung truoc node p
 int number6,flag3=0;
 printf("\nnhap vao gia tri cua node dung sau node can xoa ");
 scanf("%d",&number6);
 for(pnode=l.phead;pnode!=NULL;pnode=pnode->pnext)
  if(pnode->number==number6)
  flag3=1;
 if(flag3==1)
 {
  printf("\ndanh sach lien ket sau khi xoa node dung truoc %d la \n",number6);
  for(pnode=l.phead;pnode!=NULL;pnode=pnode->pnext)
  if(pnode->number==number6)
  {
    removebefore(l,pnode);
    output(l);
  }
 }
 if(flag3==0)
  printf("khong co %d trong danh sach lien ket nen khong xoa duoc",number6);
 //xoa cuoi
 printf("\n\n danh sach lien ket sau khi xoa node cuoi \n\n");
 removetail(l);
 output(l);
 //xoa danh sach
 printf("\n\ndanh sach sau khi xoa la \n\n 0");
 removelist(l);
 output(l);
 getch();
}

※ Bài viết cùng chuyên mục


Tác giảThông điệp
phanvăntàiem
Member

phanvăntàiem
Member
Giới tính : Nam
Tuổi : 26
Posts Posts : 4
Coins Coins : 8
Thanked Thanked : 0
đệ mắc lỗi gì đây vậy các huynh ? Empty

cảm ơn huynh, đệ sẽ nghiên cứu thêm vấn đề huynh nói mong sẽ hiểu ra mà ko ra đệ sẽ pm tiếp hihi đệ mắc lỗi gì đây vậy các huynh ? 593288

※ Bài viết cùng chuyên mục


Tác giảThông điệp
Sponsored content


đệ mắc lỗi gì đây vậy các huynh ? Empty

※ Bài viết cùng chuyên mục


 
đệ mắc lỗi gì đây vậy các huynh ?
Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang 
Trang 1 trong tổng số 1 trang

Permissions in this forum:Bạn không có quyền trả lời bài viết
Windows Việt :: Lưu Trữ :: Lưu Trữ - Các môn học cũ :: Kỹ Thuật Lập Trình-
[Windows Việt] Deverloped by Nguyễn Gia Phú - https://windows.forumvi.com
Powered by © Forumotion.com - phpBB™ version ©phpBB2
Go to top Go to bottom