标题:汗,帮一下小弟!这样都会出错
只看楼主
ondy
Rank: 1
等 级:新手上路
威 望:1
帖 子:88
专家分:0
注 册:2007-9-4
 问题点数:0 回复次数:1 
汗,帮一下小弟!这样都会出错
#include<stdio.h>
#include<malloc.h>
typedef char elem;
typedef struct list
{
 elem data;
 struct list *next;
}list_q;
void initlis(list *&s)
{
 s=(list *)malloc(sizeof(list));
 s-next=NULL;//初始化一个线性表
}
int listleng(list *s)
{
 int i=0;
 while(s!=NULL)
 {
  i++;
  s=s->next;
 }
 //长度
 return i;
}
void getelem(list *s,int i,elem &date)
{
 int j=0;
 while(s!=NULL)
 {
  j++;
  s=s->next;
 }
 if(s==NULL&&j>i)
 {
  printf("你的线性表有误");
 }
 else
 {
  date=s->data;
 }
}
void listinsert(list *&s,int i,elem e)
{
  int j=0;
 list *p;
 p=(list *)malloc(sizeof(list));
 p->data=e;
 while(s!=NULL&&j<i-1)
 { j++;
  s=s->next;
 }
 if(j>i-1)
 {
  printf("出错");
 }
 else
 {
  p->next=s->next;   s->next=p;  }
}
void listdelete(list *&s,int i,elem e)
{ list *q;
 int j=0;
 while(s!=NULL&&j<i-1)
 { j++;
  s=s->next; /
 }
 q=s->next;
 if(j>i-1)
 {
  printf("删除出错");
 }
 else
 {
  s->next=q->next;
 }
 free(q); //释放
}
void display(list *s)
{
 while(s!=NULL)
 {
  printf("%c",s->data);
  s=s->next;
 }
}
int main()
{
 char ch[5];
 int n;
 list *s; //建立一个线性表
 initlis(s);//初始化
 for(n=0;n<5;n++)
 {
  printf("输入%d个字符",n+1);
  scanf("%c",&ch[n]);
  listinsert(s,n,ch[n]);
 }
 printf("输出的结果:")
 display(s);
 return 0;
}

帮看一下,那里出错!!!
搜索更多相关主题的帖子: 都会 
2007-11-29 21:17
missiyou
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:531
专家分:218
注 册:2007-10-9
得分:0 
看了第一个函数初始化、
void initlis(list *&s)//应该是list_p *&s)这个我有点看不懂,可以直接list_p *s;
{
s=(list *)malloc(sizeof(list));//我个人觉得,list_p r=(list *)malloc(sizeof(list)); s=r; r->next=NULL; 这样保证在次调用链表s指向的是头结点。

s-next=NULL;//初始化一个线性表
}
2007-11-29 21:58



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-189393-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.190443 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved