#include<stdio.h> #include<malloc.h> #include<windows.h> #include"typet.h" node *Creat(){ node *h,*s,*r; h=malloc(sizeof(node)); h->next=NULL; r-h; s=malloc(sizeof(node)); printf("名称:\n"); scanf("%s",&s->data.name); printf("增加时间:\n"); scanf("%s",&s->data.time); printf("手机尾号:\n"); scanf("%s",&s->data.useful); printf("类型:\n"); scanf("%s",&s->data.type); r->next=s; r=s; r->next=NULL; return h; } void print(node *s){ while (s->next!=NULL){ s=s->next; printf("名称:"); printf("%s",&s->data.name); printf("增加时间:"); printf("%s",&s->data.time); printf("手机尾号:"); printf("%s",&s->data.useful); printf("类型:"); printf("%s",&s->data.type); } } void save(node *s){ int id=MessageBox(NULL,"是否保存文件!","保存文件",MB_YESNO); if(id==IDYES) { FILE *fp;//创建文件指针 int n; fp=fopen("f1,txt","a"); while (s->next!=NULL){ s=s->next; fprintf(fp,"%s\n",s->data.name); fprintf(fp,"%lf\n",s->data.time); fprintf(fp,"%s\n",s->data.useful); fprintf(fp,"%d\n",s->data.type); } fclose(fp); MessageBox(NULL,"保存文件成功!","保存文件",MB_OK); main(); } else main(); } void outFile(){ pubname t; FILE *fp; if((fp=fopen("f1.txt","r"))==NULL){//w 新建,a 追加 MessageBox(NULL,"文件打开失败!","读取文件",MB_OK); main(); } while (!feof(fp)){ fscanf(fp,"%s",t.name); fscanf(fp,"%s",t.time); fscanf(fp,"%s",t.useful); fscanf(fp,"%s",t.type); printf("名称:"); printf("%s\n",t.name); printf("增加时间:"); printf("%s\n",t.time); printf("用途:"); printf("%s\n",t.useful); printf("类型:"); printf("%s\n",t.type); } fclose(fp); }将这段代码添加其中是否会解决
时间: 2024-04-07 21:28:04 浏览: 85
将这段代码添加进去可以解决查询功能的问题。在ViesPub()函数中,可以调用print()函数来打印所有订单的信息,而print()函数中调用的order()函数可以获取所有订单的信息。同时,可以添加一个save()函数来保存所有订单的信息到文件中,以便下次查询。此外,outFile()函数也可以用来从文件中读取订单信息并打印出来。
相关问题
2-6 用头插法创建单链表 分数 20 作者 朱晓龙 单位 西安邮电大学 Creat_LinkList()函数是使用头插法建立一个带头节点的单链表。函数须返回单链表的头指针,空链表须返回NULL。 函数接口定义: LinkList Creat_LinkList(); LinkList是函数返回的头指针类型。 裁判测试程序样例: #define FLAG -1 #include <stdio.h> #include <malloc.h> typedef int datatype; typedef struct node { datatype data; struct node *next; }LNode, *LinkList; LinkList Creat_LinkList(); void Print_LinkList(LinkList L);/*这里忽略函数实现部分 */ int main() { LinkList L; L = Creat_LinkList(); if(L == NULL) { printf("L=NULL,error!"); return 0; } Print_LinkList( L ); return 0; } /* 请在这里填写答案 */ 输入样例: 在这里给出一组输入。例如: 1 2 3 4 5 -1 输出样例: 在这里给出相应的输出。例如: 5 4 3 2 1
```
LinkList Creat_LinkList() {
LinkList L = (LinkList)malloc(sizeof(LNode)); // 创建头节点
L->next = NULL; // 头节点的指针域置为 NULL
datatype data;
scanf("%d", &data);
while (data != FLAG) { // FLAG 为结束标志
LNode* p = (LNode*)malloc(sizeof(LNode)); // 创建新节点
p->data = data; // 将数据存入新节点
p->next = L->next; // 将新节点插入到头节点之后
L->next = p;
scanf("%d", &data);
}
return L;
}
```
#include <stdlib.h>#include <stdio.h>#define N 10typedef struct list{ int data; struct list *next;} NODE;NODE *creat_list(int *a, int n){ NODE *head, *p, *q; head = (NODE *)malloc(sizeof(NODE)); head->next = NULL; q = head; for (int i = 0; i < n; i++) { p = (NODE *)malloc(sizeof(NODE)); p->data = a[i]; q->next = p; q = p; } q->next = NULL; return head;}void insNode(NODE *head, int x){ NODE *p, *q, *t; p = head; q = head->next; while (q != NULL && q->data < x) { p = q; q = q->next; } t = (NODE *)malloc(sizeof(NODE)); t->data = x; p->next = t; t->next = q;}void print(NODE *h){ NODE *p; p = h->next; while (p != NULL) { printf("%d ", p->data); p = p->next; } printf("\n");}int main(){ int i, j, x, a[N] = {1, 13, 25, 37, 9, 911, 133, 415, 147, 19}; NODE *head; head = creat_list(a, 10); scanf("%d", &x); insNode(head, x); print(head); return 0;}这个没问题吗?
这个代码的主要功能是实现将一个无序数组转化为有序链表,并能够在有序链表中插入一个新的元素,最后输出整个有序链表。代码的主要逻辑和实现方式都没有问题,但是有两个小问题需要注意:
1. 在创建链表的时候,首先要创建一个头节点,但是头节点不应该存储任何数据,因此应该将头节点的data域设为0或者其他一个无意义的值,而不是随便malloc一个节点。
2. 在插入新节点的时候,如果插入的节点比链表中所有节点的值都要小,那么新节点应该作为头节点的后继节点,而不是作为头节点本身。因此应该在while循环结束后,判断一下是否需要将新节点作为头节点的后继节点。
下面是修改后的代码:
```
#include <stdlib.h>
#include <stdio.h>
#define N 10
typedef struct list{
int data;
struct list *next;
} NODE;
NODE *creat_list(int *a, int n){
NODE *head, *p, *q;
head = (NODE *)malloc(sizeof(NODE));
head->data = 0; // 头节点不存储任何数据
head->next = NULL;
q = head;
for (int i = 0; i < n; i++)
{
p = (NODE *)malloc(sizeof(NODE));
p->data = a[i];
q->next = p;
q = p;
}
q->next = NULL;
return head;
}
void insNode(NODE *head, int x){
NODE *p, *q, *t;
p = head;
q = head->next;
while (q != NULL && q->data < x)
{
p = q;
q = q->next;
}
t = (NODE *)malloc(sizeof(NODE));
t->data = x;
p->next = t;
t->next = q;
if (head->next == NULL || x < head->next->data) {
head->next = t;
}
}
void print(NODE *h){
NODE *p;
p = h->next;
while (p != NULL)
{
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
int main(){
int i, j, x, a[N] = {1, 13, 25, 37, 9, 911, 133, 415, 147, 19};
NODE *head;
head = creat_list(a, 10);
scanf("%d", &x);
insNode(head, x);
print(head);
return 0;
}
```
希望能对你有所帮助!
阅读全文