|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
帮帮孩子吧
孩子真不行了
这个程序不知道为什么就是构建不了
运行时插入一个元素后便进行不下去
什么也不显示 之后便退出了
程序如下:
#include<stdio.h>
#include<stdlib.h>
struct line
{
int liner;
struct line *next;
};
void getinput(struct line *newletter)//向新节点中输入元素
{
printf("请输入元素:");
scanf("%d",(*newletter).liner);
}
void printletter(struct line *letter)
{
struct line *newletter;
newletter=letter;
while(newletter->next!=letter)
{
printf("%d\n",newletter->liner);
newletter=newletter ->next;
}
}
void freeletter(struct line **letter)//释放空间
{
struct line *temp;
while(letter!=NULL)
{
temp =*letter;
*letter= (*letter)->next;
free(temp);
}
}
void addline(struct line **letter)//插入新节点
{
int i;
struct line *newletter,*temp;
printf("输入你想输入的值,当输入0时结束输入\n");
while(1)//小甲鱼在带你学c带你飞中讲的循环
{
scanf("%d",&i);
if(i==0)break;
if((*letter)=NULL)
{
(*letter)=(struct line *)malloc(sizeof(struct line));
if(!(*letter))
exit(0);
(*letter)->liner=i;
(*letter)->next=*letter;
}
else
{
for(temp=(*letter);temp->next !=(*letter);temp=temp->next)
;
newletter=(struct line *)malloc(sizeof(struct line));
if(!newletter)
exit(0);
newletter->liner=i;
newletter->next=(*letter);
temp->next=newletter;
}
}
}
void insert(struct line **letter,int i)//插入函数
{
struct line *temp,*last,*target,*p;
int item,j=1;
printf("请输入你想插入的值:");
scanf("%d",&item);
if(i==1)
{
temp=(struct line *)malloc(sizeof(struct line));
temp->liner = item;
for(last=(*letter);last->next!=(*letter);last=last->next);
last->next=temp;
temp->next=(*letter);
}
else
{
target = (*letter);
for(;j<i-1;++j)
{
target->next;
}
temp=(struct line *)malloc(sizeof(struct line));
temp->liner = item;
p=target->next;
target->next=temp;
temp->next=p;
}
}
int find(struct line *letter,int elem)//寻找到想插入位置的函数
{
struct line *target;
int i=1;
for(target=letter;target->liner!=elem&&target->next!=letter;++i)
{
target = target->next;
}
if(target->next==letter)
{return 0;}
return i;
}
int main()
{
struct line *letter ;
int ch,h,t;
printf("请输入你想插入的链表数值\n");
addline(&letter);
printf("是否打印Y/N :");
do
{
ch=getchar();
}while(ch!='Y'&&ch!='N');
if(ch=='Y')
{
printletter(letter);
}
printf("你想插入到那个元素之后:");
scanf("%d",&t);
h=find(letter,t);
insert(&letter,h);
printf("是否打印Y/N :");
do
{
ch=getchar();
}while(ch!='Y'&&ch!='N');
if(ch=='Y')
{
printletter(letter);
}
freeletter(&letter);
return 0;
}
- #include<stdio.h>
- #include<stdlib.h>
- struct line
- {
- int liner;
- struct line *next;
- };
- void getinput(struct line *newletter)//向新节点中输入元素
- {
- printf("请输入元素:");
- scanf("%d",(*newletter).liner);
-
- }
- void printletter(struct line *letter)
- {
- struct line *newletter;
-
- newletter=letter;
- while(newletter->next!=letter)
- {
- printf("%d\n",newletter->liner);
- newletter=newletter ->next;
- }
- printf("%d\n",newletter->liner);
- }
- void addline(struct line **letter)//插入新节点
- {
- int i;
- struct line *newletter,*temp;
-
- printf("输入你想输入的值,当输入0时结束输入\n");
- while(1)//小甲鱼在带你学c带你飞中讲的循环
- {
- scanf("%d",&i);
- if(i==0)break;
-
- if((*letter)==NULL) // ==
- {
- (*letter)=(struct line *)malloc(sizeof(struct line));
- if(!(*letter))
- exit(0);
- (*letter)->liner=i;
- (*letter)->next=*letter;
- }
- else
- {
- for(temp=(*letter);temp->next !=(*letter); temp=temp->next);
- newletter=(struct line *)malloc(sizeof(struct line));
- if(!newletter)
- exit(0);
- newletter->liner=i;
- newletter->next=(*letter);
- temp->next=newletter;
- }
- }
- }
- int main()
- {
- struct line *letter=NULL ;
- int ch,h,t;
- printf("请输入你想插入的链表数值\n");
- addline(&letter);
- printf("是否打印Y/N :");
- do
- {
- ch=getchar();
- }while(ch!='Y'&&ch!='N');
- if(ch=='Y')
- {
- printletter(letter);
- }
- return 0;
- }
复制代码
|
|