#include<stdio.h>
#include<stdlib.h>
typedef struct node//定義節點結構
{
int data;
struct node *next;
} Node;
typedef struct node *Linklist;
void Create_list(Node **head)//main函式中將指標的地址&p傳遞給函式
{
int x;
Node *p;
(*head) = (Node *)malloc(sizeof(Node));//給頭指標分配空間;
(*head)->next = NULL;
printf("input any element :\n");
scanf_s("%d", &x);
while (x != '\n')
{
p = (Node *)malloc(sizeof(Node));//給第一個節點分配空間
p->data = x;
p->next = (*head)->next;
(*head)->next = p;//頭指標指向第一個節點
printf("input another element:\n");
scanf_s("%d", &x);
}
}
void main()
{
Node *h, *p;
Create_list(&h);
p = h->next;//p指向第一個節點
while (p!=NULL)
{
printf("%d", p->data);
p = p->next;//指向下一個節點
}
printf("\n");
}
生成函式中,沒辦法讓回圈結束,輸入非Int型的時候就進入死回圈,請問是怎么回事?
uj5u.com熱心網友回復:
#include<stdio.h>
#include<stdlib.h>
typedef struct node//定義節點結構
{
int data;
struct node *next;
} Node;
typedef struct node *Linklist;
void Create_list(Node **head)//main函式中將指標的地址&p傳遞給函式
{
int x;
Node *p;
(*head) = (Node *)malloc(sizeof(Node));//給頭指標分配空間;
(*head)->next = NULL;
printf("input any element :\n");
scanf("%d", &x);
while (1)
{
if(x==9)
break;
else{
p = (Node *)malloc(sizeof(Node));//給第一個節點分配空間
p->data = x;
p->next = (*head)->next;
(*head)->next = p;//頭指標指向第一個節點
printf("input another element:\n");
scanf("%d", &x);
}
}
}
void main()
{
Node *h, *p;
Create_list(&h);
p = h->next;//p指向第一個節點
while (p!=NULL)
{
printf("%d", p->data);
p = p->next;//指向下一個節點
}
printf("\n");
}
大概改了一下, 以9為結束標志。。你程式中是int x;
應該知道問題出在什么地方了吧,程式可以改進下的
注意除錯的話,你編譯環境中是scanf_s 我寫的是scanf
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/94373.html
標籤:基礎類
上一篇:資料結構 基本排序演算法
