回 帖 发 新 帖 刷新版面

主题:一个链表程序,请帮忙纠正一下错误,谢谢

大家好,蓝莓公主这厢有礼了,下面是我变得一个程序,已经有高人帮助盖过了,所以现在Show(),Setnull(),Insert()函数都没有问题,问题出现在delete(),get()函数中,而我又不知道如何改,希望大家能够帮帮忙,谢啦!
#include<iostream.h>
#include <stdio.h>
#include <malloc.h>

typedef char datatype;
typedef struct node
{datatype data;
 struct node *next;
}linklist;

linklist *Setnull()
{linklist *head;
 head=(linklist*)malloc(sizeof(linklist));
 head->next=NULL;
 /*head->data=0;/*?*/
 cout<<"the list has bulit up"<<endl;
 return(head);
}

 void Show(linklist *head)
{
 char ch;
 linklist *p;
  if(head==NULL)
  {
      cout<<"there isn't any progress!"<<endl;
      return;
  }
  
  while(head!=NULL)
  {
  cout<<"the progress include:"<<head->data<<endl;
  head=head->next;
  }
  
  
 }

void INSERT(linklist *head,char ch)
{
  head->data=ch;
 cout<<"the progress has insert it"<<endl;
}

void DELETEAFTER(linklist *head,linklist *p)
{linklist *r;
 /*p=(linklist*)malloc(sizeof(linklist));*/
 while(head->next!=p)
 {head=head->next;}
     
 p->next=head->next;
 free(p);
 cout<<"the progress has been deleted!"<<endl;
 Show(head);
}

void GET (linklist *head,char ah)
{

 
 linklist *p;
 p=head->next;
 while(p!=NULL)
 if(p->data!=ah)
     p=p->next;
  else break;
  cout<<"the progress has been finded";
  cout<<" now we will delete it!"<<endl;
  DELETEAFTER(head,p);
}



void name()
{
    cout<<"wen"<<endl;
}
 void main()
 {
     linklist *head1;
     head1=Setnull();
     cout<<"now please input the progress U want to insert!"<<endl;
     char ch;
     ch=getchar();
     INSERT(head1,ch);
     Show(head1);
     /*name();
     cout<<"I love you!"<<endl;*/
      cout<<"please input the name you want to find!"<<endl;
      char ah;
      ah=getchar();
     GET(head1,ah);
    
 }

回复列表 (共5个回复)

沙发


void insert(linklist *head,char ch,int n)
{
    int i;
    linklist *temp1,*temp2;
    temp1new linklist;//建立一个新的结点
    temp1->data=ch;  //储存数据
    temp2=head;
    for(i=1;i<n-1;i++)  //找到第n-1个结点
      temp2=temp2->next;
    temp1->next=temp2->next;//新建的结点指向第N个结点
    temp2->next=temp1;//第N-1个结点指向新建的结点
}

板凳

我想再请教大家一个问题;我想将链表中的所有结点依次输出,但是只能显示一个,下面是我的程序,希望大家多提 宝贵意见
 void Show(linklist *head)
{
 char ch;
  if(head==NULL)
  {
      cout<<"there isn't any progress!"<<endl;
      return;
  }
  
  while(head!=NULL)
  {
  cout<<"the progress include:"<<head->data<<endl;
  head=head->next;
  }
  
 }
谢谢大家啦 

3 楼

while(head!=NULL)  ???什么意思?

应该是这样吧:while(head->next != NULL)

4 楼

谢谢楼上的,但是前提是我写的程序有
char ch;
head->data=ch;
说明head里面有结点 ,如果直接来判断head->next!=NULL的话,那么head里面的那个结点是不是给忘掉了呢
谢谢你

5 楼


结点中有数据域head->data,也有指针域head->next(指向下一个结点).它们就不影响。你还可以用一个指针把头指针保存。

我来回复

您尚未登录,请登录后再回复。点此登录或注册