单链表删除函数出现了问题,高手看看
#include "stdlib.h"#include "string.h"
#include "stdio.h"
#define NULL 0
typedef struct lode
{int data;
struct lode *next;
}lode,*linklist;
createlode(linklist p,int n)
{ int i;
linklist p1;
p1=p;
for(i=0;i<n;i++)
{insertlode(p1,i);
}
}
insertlode(linklist p,int n)
{ linklist s;
int j=0;
while(j<n)
{p=p->next;
j++;
}
s=(linklist)malloc(sizeof(struct lode));
scanf("%d",&s->data);
s->next=p->next;
p->next=s;
}
dellode(linklist p,int n)//问题函数。
{int j;
linklist s;
linklist pp=p->next;
while(pp->data!=n)
{pp=pp->next;
}
s=pp;
s=s->next;
free(pp);
}
showlode(linklist p)
{linklist pp=p->next;
printf("the circular linked list is:\n");
while(pp!=p)
{ printf("%d ",pp->data);
pp=pp->next;
}
printf("\n");
}
main()
{linklist p;
int n;
p=(linklist)malloc(sizeof(struct lode));
p->next=p;
printf("input the number of the circular linked list :");
scanf("%d",&n);
createlode(p,n);
showlode(p);
printf("input the number of what you want to del lode:\n");
scanf("%d",&n);
dellode(p,n);
showlode(p);
getch();
}
----------------解决方案--------------------------------------------------------
creatlode函数中用到了insertlode,
应该把insertlode放到前面,
还有就是getch();的函数库为<conio.h>
----------------解决方案--------------------------------------------------------
还是不行,诸位再看看,谢谢了。
----------------解决方案--------------------------------------------------------
getch()的函数库为<conio.h>?是"stdio.h"吧
----------------解决方案--------------------------------------------------------
#include "stdlib.h"
#include "string.h"
#include "stdio.h"
#define NULL 0
#include"conio.h"
typedef struct lode
{
int data;
struct lode *next;
}lode,*linklist;
void insertlode(linklist p,int n)
{
linklist s;
int j=0;
while(j<n)
{
p=p->next;
j++;
}
s=(linklist)malloc(sizeof(struct lode));
scanf("%d",&s->data);
s->next=p->next;
p->next=s;
}
void createlode(linklist p,int n)
{ int i;
linklist p1;
p1=p;
for(i=0;i<n;i++)
{
insertlode(p1,i);
}
}
void dellode(linklist p,int n)//问题函数。
{
// int j;
linklist s;
linklist pp=p;
while(pp->data!=n&&pp->next!=NULL)
{ s=pp;
pp=pp->next;
}
if(pp->data==n)
{
s->next=pp->next;
free(pp);
}
}
void showlode(linklist p)
{
linklist pp=p->next;
printf("the circular linked list is:\n");
while(pp!=p)
{
printf("%d ",pp->data);
pp=pp->next;
}
printf("\n");
}
main()
{
linklist p;
int n1;
int n2;
p=(linklist)malloc(sizeof(struct lode));
p->next=p;
printf("请输入要建立的链表的结点个数 :");
scanf("%d",&n1);
createlode(p,n1);
showlode(p);
printf("请输入要删除的结点数值:\n");
scanf("%d",&n2);
dellode(p,n2);
showlode(p);
getch();
}
可以运行了,你看一下,指针的用法仔细看看啊,应该不难
----------------解决方案--------------------------------------------------------
#include "stdlib.h"
#include "string.h"
#include "stdio.h"
#define NULL 0
#include"conio.h"
typedef struct lode
{
int data;
struct lode *next;
}lode,*linklist;
void insertlode(linklist p,int n)
{
linklist s;
int j=0;
while(j<n)
{
p=p->next;
j++;
}
s=(linklist)malloc(sizeof(struct lode));
scanf("%d",&s->data);
s->next=p->next;
p->next=s;
}
void createlode(linklist p,int n)
{ int i;
linklist p1;
p1=p;
for(i=0;i<n;i++)
{
insertlode(p1,i);
}
}
void dellode(linklist p,int n)//问题函数。
{
// int j;
linklist s;
linklist pp=p;
while(pp->data!=n&&pp->next!=NULL)
{ s=pp;
pp=pp->next;
}
if(pp->data==n)
{
s->next=pp->next;
free(pp);
}
}
void showlode(linklist p)
{
linklist pp=p->next;
printf("the circular linked list is:\n");
while(pp!=p)
{
printf("%d ",pp->data);
pp=pp->next;
}
printf("\n");
}
main()
{
linklist p;
int n1;
int n2;
p=(linklist)malloc(sizeof(struct lode));
p->next=p;
printf("请输入要建立的链表的结点个数 :");
scanf("%d",&n1);
createlode(p,n1);
showlode(p);
printf("请输入要删除的结点数值:\n");
scanf("%d",&n2);
dellode(p,n2);
showlode(p);
getch();
}
刚才的程序有点问题,现在应该没什么问题了.太急了没太在意.
----------------解决方案--------------------------------------------------------
原帖由 [bold][underline]giant611[/underline][/bold] 于 2007-12-20 20:55 发表 [url=http://bbs.bc-cn.net/redirect.php?goto=findpost&pid=1156131&ptid=193491][/url]
getch()的函数库为?是"stdio.h"吧
getch()的函数库为?是"stdio.h"吧
不知道为什么,大家都爱弄混这几个东西: getch getche getchar
----------------解决方案--------------------------------------------------------
#include <stdio.h>
#include <stdlib.h.h>
#include <string.h>
#include <conio.h>
用的 TC 吧,其他很多编译器都必须包含头文件,否则无法编译。
<> 包含库中的头文件,一般是编译器安装目录的 include 文件夹中的头文件。
"" 包含当前目录中的文件 或 工程中的文件。
还有老谭的书也不好。
----------------解决方案--------------------------------------------------------