主题:[讨论]大伙帮我看看这个链表,谢谢拉
#include "stdio.h"
#include "stdlib.h"
#define FLAG -1
typedef struct node
{
int data;
struct node *next;
}Lnode,*Linklist;
Linklist Creat_LinkList() /*初始化链表, 从头部插入*/
{
Linklist L=NULL;
Lnode *s=NULL;
int x;
printf("please insert some nums :\n");
scanf("%d",&x);
while(x!=FLAG)
{
s=malloc(sizeof(Lnode));
s->data=x;
s->next=L;L=s;
scanf("%d",&x);
}
printf("the linklist creat Success! \n");
return L;
}
Linklist Creat_1LinkList() /*初始化链表,从尾部插入*/
{
Linklist L=NULL;
Lnode *r=NULL,*s=NULL;
int x;
printf("please insert some nums :\n");
scanf("%d",&x);
while(x!=FLAG)
{
s=malloc(sizeof(Lnode));
s->data=x;
if(L==NULL)
L=s;
else
r->next=s;
r=s;
r->next=NULL;
scanf("%d",&x);
}
printf("the linklist creat Success! \n");
return L;
}
Lnode* Get_Linklist(Linklist L,int i) /*按值 查找 i 为要查找的值 此函数结果返回其指针*/
{
Lnode* p=L->next; /*这里不知道为什么,返回的指针p 为空*/
while(p!=NULL&&p->data!=i)
p=p->next;
return p;
}
int Insert_Linklist(Linklist L,int i, int x) /*插入一个新结点*/
{
Lnode* p,*s;
p=Get_Linklist(L,i-1);
if(p==NULL)
{printf("the num 'i' error!!");return 0;}
else{
s=malloc(sizeof(Lnode));
s->data=x;
s->next=p->next;
p->next=s;
return 1;
}
}
main()
{
Linklist L1=NULL,L2=NULL; /*定义两个链表指针,L1是用于从头部插入建立链表,L2是从尾部插入建立新链表*/
Lnode* s;
int i,x,y;
clrscr(); /*清屏*/
printf("this is a linklist no headcrunode : \n");
L1=Creat_LinkList(); /*返回从头部插入链表初始化函数指针*/
while(L1!=NULL)
{
printf("%d-->",L1->data);
L1=L1->next;
}
printf("\n");
printf("this is a linklist with headcrunode :\n");
L2=Creat_1LinkList(); /*返回从尾部插入链表初始化函数指针*/
while(L2!=NULL)
{
printf("%d-->",L2->data);
L2=L2->next;
}
printf("please input the num which you want to find:\n");
scanf("%d",&i); /*此输入需要查找的链表中的值 (按值查找)*/
s=Get_Linklist(L2,i); /*返回按值查找 返回的指针 ,问题也这里 */
printf("%d\n",s->data); /*将你要查找的值 ,在输出,因为查找函数部分出现问题,这里总是输入0,应该是因为返回的指针p==NULL吧 */
printf("please choose the location and the num you want to insert:\n");
scanf("%d%d",&x,&y); /*这是插入新结点的位置和 值 ,这部分还没调试,主要是想请大家帮我看看查找函数部分出现的问题*/
Insert_Linklist(L2,x,y);
printf("\n");
getch();
}
就是查找函数部分出现问题, 帮帮忙拉 谢谢
#include "stdlib.h"
#define FLAG -1
typedef struct node
{
int data;
struct node *next;
}Lnode,*Linklist;
Linklist Creat_LinkList() /*初始化链表, 从头部插入*/
{
Linklist L=NULL;
Lnode *s=NULL;
int x;
printf("please insert some nums :\n");
scanf("%d",&x);
while(x!=FLAG)
{
s=malloc(sizeof(Lnode));
s->data=x;
s->next=L;L=s;
scanf("%d",&x);
}
printf("the linklist creat Success! \n");
return L;
}
Linklist Creat_1LinkList() /*初始化链表,从尾部插入*/
{
Linklist L=NULL;
Lnode *r=NULL,*s=NULL;
int x;
printf("please insert some nums :\n");
scanf("%d",&x);
while(x!=FLAG)
{
s=malloc(sizeof(Lnode));
s->data=x;
if(L==NULL)
L=s;
else
r->next=s;
r=s;
r->next=NULL;
scanf("%d",&x);
}
printf("the linklist creat Success! \n");
return L;
}
Lnode* Get_Linklist(Linklist L,int i) /*按值 查找 i 为要查找的值 此函数结果返回其指针*/
{
Lnode* p=L->next; /*这里不知道为什么,返回的指针p 为空*/
while(p!=NULL&&p->data!=i)
p=p->next;
return p;
}
int Insert_Linklist(Linklist L,int i, int x) /*插入一个新结点*/
{
Lnode* p,*s;
p=Get_Linklist(L,i-1);
if(p==NULL)
{printf("the num 'i' error!!");return 0;}
else{
s=malloc(sizeof(Lnode));
s->data=x;
s->next=p->next;
p->next=s;
return 1;
}
}
main()
{
Linklist L1=NULL,L2=NULL; /*定义两个链表指针,L1是用于从头部插入建立链表,L2是从尾部插入建立新链表*/
Lnode* s;
int i,x,y;
clrscr(); /*清屏*/
printf("this is a linklist no headcrunode : \n");
L1=Creat_LinkList(); /*返回从头部插入链表初始化函数指针*/
while(L1!=NULL)
{
printf("%d-->",L1->data);
L1=L1->next;
}
printf("\n");
printf("this is a linklist with headcrunode :\n");
L2=Creat_1LinkList(); /*返回从尾部插入链表初始化函数指针*/
while(L2!=NULL)
{
printf("%d-->",L2->data);
L2=L2->next;
}
printf("please input the num which you want to find:\n");
scanf("%d",&i); /*此输入需要查找的链表中的值 (按值查找)*/
s=Get_Linklist(L2,i); /*返回按值查找 返回的指针 ,问题也这里 */
printf("%d\n",s->data); /*将你要查找的值 ,在输出,因为查找函数部分出现问题,这里总是输入0,应该是因为返回的指针p==NULL吧 */
printf("please choose the location and the num you want to insert:\n");
scanf("%d%d",&x,&y); /*这是插入新结点的位置和 值 ,这部分还没调试,主要是想请大家帮我看看查找函数部分出现的问题*/
Insert_Linklist(L2,x,y);
printf("\n");
getch();
}
就是查找函数部分出现问题, 帮帮忙拉 谢谢