编写一个程序,功能为读入一组正整数(以-1作为结束标志),将它们存储在一个动态链表
编写一个程序,功能为读入一组正整数(以-1作为结束标志),将它们存储在一个动态链表中。再读入一个数m,在链表中搜索值为m的结点,输出从该结点开始直至链表结束的所有数据。此...
编写一个程序,功能为读入一组正整数(以-1作为结束标志),将它们存储在一个动态链表中。再读入一个数m,在链表中搜索值为m的结点,输出从该结点开始直至链表结束的所有数据。此功能为可重复多次的,直至用户输入'N'结束程序。要求:程序包含2个子函数,各函数要求如下:
子函数1:功能为创建包括n个结点的链表并读入数据;
形式为:struct LNode *creat(void);
子函数2:功能为输出链表中的从m值开始的所有结点;
形式为:void print(struct LNode *head,int m);
提示:程序可根据需要设置一个全程变量n,用于计结点个数;
运行结果示例: 展开
子函数1:功能为创建包括n个结点的链表并读入数据;
形式为:struct LNode *creat(void);
子函数2:功能为输出链表中的从m值开始的所有结点;
形式为:void print(struct LNode *head,int m);
提示:程序可根据需要设置一个全程变量n,用于计结点个数;
运行结果示例: 展开
展开全部
你要的,略作结构上的优化。看不懂的话,加我QQ:1194315273,或者email:ZaneYork@qq.com
#include <stdio.h>
#include <stdlib.h>
typedef struct linkList_Node
{
int data;
struct linkList_Node *next;
}LNode;
void add(LNode *head,int data)
{
LNode *tmp=malloc(sizeof(LNode));
while(head->next!=NULL)
head=head->next;
head->data=data;
head->next=tmp;
tmp->next=NULL;
}
LNode *create(void)
{
int tmp=-1;
LNode *head=malloc(sizeof(LNode));
head->next=NULL;
printf("输入一组正整数(以-1结束):\n");
do
{
add(head,tmp);
scanf("%d",&tmp);
fflush(stdin);
}while(tmp>=0);
return head;
}
void print(LNode *head,int m)
{
while(head->next!=NULL)
{
if(head->data==m)
break;
else
head=head->next;
}
if(head->next==NULL)
{
printf("The number %d isn't in the link-list.\n",m);
return;
}
printf("输出链表结果:\n");
while(head->next!=NULL)
{
printf("%d\t",head->data);
head=head->next;
}
printf("\n");
}
void del(LNode *head)
{
if(head->next!=NULL)
del(head->next);
free(head);
}
int main()
{
int m;
LNode *head=create();
while(1)
{
printf("输入m值(-1结束):");
scanf("%d",&m);
if(m>=0)
print(head,m);
else
break;
}
del(head);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
typedef struct linkList_Node
{
int data;
struct linkList_Node *next;
}LNode;
void add(LNode *head,int data)
{
LNode *tmp=malloc(sizeof(LNode));
while(head->next!=NULL)
head=head->next;
head->data=data;
head->next=tmp;
tmp->next=NULL;
}
LNode *create(void)
{
int tmp=-1;
LNode *head=malloc(sizeof(LNode));
head->next=NULL;
printf("输入一组正整数(以-1结束):\n");
do
{
add(head,tmp);
scanf("%d",&tmp);
fflush(stdin);
}while(tmp>=0);
return head;
}
void print(LNode *head,int m)
{
while(head->next!=NULL)
{
if(head->data==m)
break;
else
head=head->next;
}
if(head->next==NULL)
{
printf("The number %d isn't in the link-list.\n",m);
return;
}
printf("输出链表结果:\n");
while(head->next!=NULL)
{
printf("%d\t",head->data);
head=head->next;
}
printf("\n");
}
void del(LNode *head)
{
if(head->next!=NULL)
del(head->next);
free(head);
}
int main()
{
int m;
LNode *head=create();
while(1)
{
printf("输入m值(-1结束):");
scanf("%d",&m);
if(m>=0)
print(head,m);
else
break;
}
del(head);
return 0;
}
来自:求助得到的回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询