4.编写算法,创建一个以正序排列的单链表。(要求从键盘输入整数,0为结束标志)
哪位知道怎么做
用while循环,先,新建一个结点 ,输入值,判定输入是否是0,如果不是就把该结点用直接插入排序算法插入链表,如果是,设置链表结束,并结束循环
供参考:
#include <stdio.h>
#include <stdlib.h>
typedef struct Lnode{
int data;
struct Lnode* next;
}LNode;
LNode *create_LinkList()
{
int data ;
LNode *head, *p, *q;
head = p = (LNode *)malloc(sizeof(LNode));
p->next = NULL; // 创建单链表的表头结点head
while (1)
{
scanf("%d",&data);
if (data == 0) break ;
q = (LNode *)malloc(sizeof(LNode));
q->data = data; // 数据域赋值
q->next = NULL;
p->next = q;
p=q ; // 新创建的结点总是作为最后一个结点
}
return (head);
}
void print(LNode* head)
{
LNode* p = head;
while(p->next){
printf(p->next == head->next ? "%d" : "->%d",p->next->data);
p = p->next;
}
printf("\n");
}
int main()
{
LNode* head = NULL;
head = create_LinkList();
print(head);
return 0;
}