C语言数据结构问题,求高手解答下,谢谢了
#include<stdio.h>#include<malloc.h>typedefstructnode{intx;structnode*next;}NODE;voidi...
#include<stdio.h>
#include<malloc.h>
typedef struct node
{int x;
struct node *next;
}NODE;
void input(NODE **a)
{
NODE *p,*q;
int i;
printf("输入链表的元素,0表示结束\n");
*a=NULL;
while(1)
{
scanf("%d",&i);
if(i==0)
break;
p=(NODE *)malloc(sizeof(NODE));
p->x=i;
p->next=NULL;
if(*a=NULL)
*a=q=p;
else
{
q->next=p;
q=q->next;
}
}
}
void output(NODE *a)
{
int i;
for(i=0;a!=NULL;i++,a=a->next)
{
printf("%7d",a->x);
if((i+1)%10==0)
printf("\n");
}
printf("\n");
}
void disa(NODE *a,NODE **b)
{
NODE *r,*p,*q;
p=a;
r=*b=(a==NULL)?NULL:a->next;
while(p!=NULL && p->next!=NULL)
{ q=p->next;
p->next=q->next;
r->next=q;
r=q;
p=p->next;
}
r->next=NULL;
}
void main()
{
NODE *a,*b;
input(&a);
printf("链表A的元素为:\n");
output(a);
disa(a,&b);
printf("链表A的元素(奇数序号节点)为:\n");
output(a);
printf("链表B的元素(偶数序号节点)为:\n");
output(b);
}
编了个小程序,运行死机,不知道原因,检查了很多遍,求高手解答!谢谢 展开
#include<malloc.h>
typedef struct node
{int x;
struct node *next;
}NODE;
void input(NODE **a)
{
NODE *p,*q;
int i;
printf("输入链表的元素,0表示结束\n");
*a=NULL;
while(1)
{
scanf("%d",&i);
if(i==0)
break;
p=(NODE *)malloc(sizeof(NODE));
p->x=i;
p->next=NULL;
if(*a=NULL)
*a=q=p;
else
{
q->next=p;
q=q->next;
}
}
}
void output(NODE *a)
{
int i;
for(i=0;a!=NULL;i++,a=a->next)
{
printf("%7d",a->x);
if((i+1)%10==0)
printf("\n");
}
printf("\n");
}
void disa(NODE *a,NODE **b)
{
NODE *r,*p,*q;
p=a;
r=*b=(a==NULL)?NULL:a->next;
while(p!=NULL && p->next!=NULL)
{ q=p->next;
p->next=q->next;
r->next=q;
r=q;
p=p->next;
}
r->next=NULL;
}
void main()
{
NODE *a,*b;
input(&a);
printf("链表A的元素为:\n");
output(a);
disa(a,&b);
printf("链表A的元素(奇数序号节点)为:\n");
output(a);
printf("链表B的元素(偶数序号节点)为:\n");
output(b);
}
编了个小程序,运行死机,不知道原因,检查了很多遍,求高手解答!谢谢 展开
1个回答
展开全部
if (*a = NULL)
改成
if (*a == NULL)
即可。
#include<stdio.h>
#include<malloc.h>
typedef struct node {
int x;
struct node *next;
}NODE;
void input(NODE **a) {
NODE *p, *q;
int i;
printf("输入链表的元素,0表示结束\n");
*a = NULL;
while (1) {
scanf("%d", &i);
if (i == 0)
break;
p = (NODE*)malloc(sizeof(NODE));
p->x = i;
p->next = NULL;
if (*a == NULL) //这里==============
* a = q = p;
else {
q->next = p;
q = q->next;
}
}
}
void output(NODE *a) {
int i;
for (i = 0; a != NULL; i++, a = a->next) {
printf("%7d", a->x);
if ((i + 1) % 10 == 0)
printf("\n");
}
printf("\n");
}
void disa(NODE *a, NODE **b) {
NODE *r, *p, *q;
p = a;
r = *b = (a == NULL) ? NULL : a->next;
while (p != NULL && p->next != NULL) {
q = p->next;
p->next = q->next;
r->next = q;
r = q;
p = p->next;
}
r->next = NULL;
}
void main() {
NODE *a, *b;
input(&a);
printf("链表A的元素为:\n");
output(a);
disa(a, &b);
printf("链表A的元素(奇数序号节点)为:\n");
output(a);
printf("链表B的元素(偶数序号节点)为:\n");
output(b);
}
改成
if (*a == NULL)
即可。
#include<stdio.h>
#include<malloc.h>
typedef struct node {
int x;
struct node *next;
}NODE;
void input(NODE **a) {
NODE *p, *q;
int i;
printf("输入链表的元素,0表示结束\n");
*a = NULL;
while (1) {
scanf("%d", &i);
if (i == 0)
break;
p = (NODE*)malloc(sizeof(NODE));
p->x = i;
p->next = NULL;
if (*a == NULL) //这里==============
* a = q = p;
else {
q->next = p;
q = q->next;
}
}
}
void output(NODE *a) {
int i;
for (i = 0; a != NULL; i++, a = a->next) {
printf("%7d", a->x);
if ((i + 1) % 10 == 0)
printf("\n");
}
printf("\n");
}
void disa(NODE *a, NODE **b) {
NODE *r, *p, *q;
p = a;
r = *b = (a == NULL) ? NULL : a->next;
while (p != NULL && p->next != NULL) {
q = p->next;
p->next = q->next;
r->next = q;
r = q;
p = p->next;
}
r->next = NULL;
}
void main() {
NODE *a, *b;
input(&a);
printf("链表A的元素为:\n");
output(a);
disa(a, &b);
printf("链表A的元素(奇数序号节点)为:\n");
output(a);
printf("链表B的元素(偶数序号节点)为:\n");
output(b);
}
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询