#include<stdio.h>
#include<stdlib.h>
#include<string.h>
/*
demo_v2 : �������ݣ� �ڵ�����һ���ַ������͵�����
*/
// �����ļ��洢 ��
// ���ļ��ж�ȡ���ݣ���������
// д���������ݵ��ļ�
struct node{
char name[20];// ������������һ���ַ�������name
float data;
struct node *next;
};
struct node *head,*tail, *temp;
// �����ڵ�
// ���ݴ����nm��d�����������½ڵ�
struct node * create_node(char nm[], float d){
struct node * t;
t = (struct node*) malloc(sizeof(struct node));
strcpy(t->name, nm);
t ->data = d;
t ->next = NULL;
return t;
}
// ��ij���ڵ���뵽����
void link_node(struct node* t ){
// ���ڵ���뵽������
if(head==NULL){ // ����Ϊ�յ�ʱ��
head = tail = t;
}else{ //������Ϊ�յ�ʱ��
tail -> next = t;
tail = t;
}
}
void manu_create_link(){
float d;
struct node * t;
char name[20];
printf("\n ===== ��ʼ�������� ==== \n");
for( ; ;){
printf("������һ����������-1�˳��� ");
scanf("%f", &d);
if(d==-1){
printf("�˳�");
break;
}else{
printf("������һ��������");
scanf("%s",name);
t = create_node(name,d);
link_node(t);
}
}
printf(" ===== ������������ ==== \n");
}
// �������
void print_link(){
//2 ���������
temp = head;
printf("\n ===== ��ʼ������� ==== \n");
while(temp!=NULL){
printf("%s %f \n",temp->name,temp->data);
temp = temp->next;
}
printf(" ===== ����������� ==== \n");
}
// �����������ļ�
void save_link(){
FILE *fp = fopen("d:/a.txt","w");
temp = head;
printf("\n ===== ��ʼ�������� ==== \n");
while(temp!=NULL){
fprintf(fp,"%s %f \n",temp->name, temp->data);
temp = temp->next;
}
printf(" ===== ������������ ==== \n");
fclose(fp);
}
// ��ȡ�ļ����ݵ�����
void read_file_to_link(){
char name[20];
float d;
FILE *fp = fopen("d:/a.txt","r");
while( fscanf(fp,"%s",name) != EOF ){ // EOF end of file
fscanf(fp,"%f",&d);
link_node( create_node(name,d) );
}
fclose(fp);
}
//
void printUsage(){
printf(" ====== ��ӭ��������demo ===== \n");
printf(" �ֶ����������� 1 \n");
printf(" ���ļ����ݵ������� 2 \n");
printf(" ��ӡ��������� 3 \n");
printf(" д�������ݵ��ļ��� 4 \n");
printf(" ��������� 5 \n");
printf(" �˳��� -1 \n");
printf(" ѡ�ɣ� ");
}
void init_link(){
head = NULL;
tail = NULL;
temp = NULL;
}
void main(){
int op;
init_link();
while(1){
printUsage();
scanf("%d",&op);
if(op==-1)
break;
switch(op){
case 1:
manu_create_link();
break;
case 2:
read_file_to_link();
break;
case 3:
print_link();
break;
case 4:
save_link();
break;
case 5:
init_link();
break;
default:
printf("****�Ƿ�����****\n");
}
}
}
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
/*
demo_v2 : 新增内容, 节点增加一个字符串类型的属性
*/
// 增加文件存储 ;
// 从文件中读取数据,到链表中
// 写链表的数据到文件
struct card{
char name[20];
char cardno[20];
char pwds[20];
double balance;
struct card*next;
};
struct card *head,*tail, *temp;
// 创建节点
// 根据传入的nm和d属性来创建新节点
struct card * create_card(char cdn[],char nm[], char pwd[],float b){
struct card * t;
t = (struct card*) malloc(sizeof(struct card));
strcpy(t->cardno,cdn);
strcpy(t->name,nm);
strcpy(t->pwds,pwd);
t ->balance = b;
t ->next = NULL;
return t;
}
// 将某个节点加入到链表
void link_card(struct card* t ){
// 将节点加入到链表中
if(head==NULL){ // 链表为空的时候
head = tail = t;
}else{ //链表不为空的时候
tail -> next = t;
tail = t;
}
}
void manu_create_link(){
char cdn[20];
char pwd[20];
char name[20];
struct card * t;
double b;
printf("\n ===== 开始创建链表 ==== \n");
for( ; ;){
printf("请输入卡号、密码、姓名:\n");
scanf("%s %s %s",cdn,name,pwd);
if(strcmp(cdn,"0")==0||strcmp(name,"0")==0||strcmp(pwd,"0")==0){
printf("退出");
break;
}else{
printf("请输入余额:\n");
scanf("%f",&b);
t = create_card(cdn,name,pwd,b);
link_card(t);
}
}
printf(" ===== 创建链表结束 ==== \n");
}
// 输出链表
void print_link(){
//2 输出该链表
temp = head;
printf("\n ===== 开始输出链表 ==== \n");
while(temp!=NULL){
printf("%s %s %s %f \n",temp->cardno,temp->pwds,temp->name,temp->balance);
temp = temp->next;
}
printf(" ===== 输出链表结束 ==== \n");
}
// 保存链表到文件
void save_link(){
FILE *fp = fopen("d:/a.txt","w");
temp = head;
printf("\n ===== 开始保存链表 ==== \n");
while(temp!=NULL){
fprintf(fp,"%s %s %s %f \n",temp->cardno,temp->pwds,temp->name,temp->balance);
temp = temp->next;
}
printf(" ===== 保存链表结束 ==== \n");
fclose(fp);
}
// 读取文件内容到链表
void read_file_to_link(){
char name[20];
float b;
char cardno[20];
char pwds[20];
FILE *fp = fopen("d:/a.txt","r");
while( fscanf(fp,"%s",cardno) != EOF ){ // EOF end of file
fscanf(fp,"%s %s %f",name,pwds,&b);
link_card( create_card(cardno,name,pwds,b) );
}
fclose(fp);
}
//
void printUsage(){
printf(" ====== 欢迎来到链表demo ===== \n");
printf(" 手动创建链表: 1 \n");
printf(" 读文件数据到链表: 2 \n");
printf(" 打印输出链表: 3 \n");
printf(" 写链表内容到文件: 4 \n");
printf(" 清空链表: 5 \n");
printf(" 退出: -1 \n");
printf(" 选吧: ");
}
void init_link(){
head = NULL;
tail = NULL;
temp = NULL;
}
void main(){
int op;
init_link();
while(1){
printUsage();
scanf("%d",&op);
if(op==-1)
break;
switch(op){
case 1:
manu_create_link();
break;
case 2:
read_file_to_link();
break;
case 3:
print_link();
break;
case 4:
save_link();
break;
case 5:
init_link();
break;
default:
printf("****非法输入****\n");
}
}
}
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
/*
demo_v2 : 新增内容, 节点增加一个字符串类型的属性
*/
// 增加文件存储 ;
// 从文件中读取数据,到链表中
// 写链表的数据到文件
struct node{
char name[20];// 比如我们增加一个字符串类型name
float data;
struct node *next;
};
struct node *head,*tail, *temp;
// 创建节点
// 根据传入的nm和d属性来创建新节点
struct node * create_node(char nm[], float d){
struct node * t;
t = (struct node*) malloc(sizeof(struct node));
strcpy(t->name, nm);
t ->data = d;
t ->next = NULL;
return t;
}
// 将某个节点加入到链表
void link_node(struct node* t ){
// 将节点加入到链表中
if(head==NULL){ // 链表为空的时候
head = tail = t;
}else{ //链表不为空的时候
tail -> next = t;
tail = t;
}
}
void manu_create_link(){
float d;
struct node * t;
char name[20];
printf("\n ===== 开始创建链表 ==== \n");
for( ; ;){
printf("请输入一个浮点数,-1退出: ");
scanf("%f", &d);
if(d==-1){
printf("退出");
break;
}else{
printf("请输入一个姓名:");
scanf("%s",name);
t = create_node(name,d);
link_node(t);
}
}
printf(" ===== 创建链表结束 ==== \n");
}
// 输出链表
void print_link(){
//2 输出该链表
temp = head;
printf("\n ===== 开始输出链表 ==== \n");
while(temp!=NULL){
printf("%s %f \n",temp->name,temp->data);
temp = temp->next;
}
printf(" ===== 输出链表结束 ==== \n");
}
// 保存链表到文件
void save_link(){
FILE *fp = fopen("d:/a.txt","w");
temp = head;
printf("\n ===== 开始保存链表 ==== \n");
while(temp!=NULL){
fprintf(fp,"%s %f \n",temp->name, temp->data);
temp = temp->next;
}
printf(" ===== 保存链表结束 ==== \n");
fclose(fp);
}
// 读取文件内容到链表
void read_file_to_link(){
char name[20];
float d;
FILE *fp = fopen("d:/a.txt","r");
while( fscanf(fp,"%s",name) != EOF ){ // EOF end of file
fscanf(fp,"%f",&d);
link_node( create_node(name,d) );
}
fclose(fp);
}
//
void printUsage(){
printf(" ====== 欢迎来到链表demo ===== \n");
printf(" 手动创建链表: 1 \n");
printf(" 读文件数据到链表: 2 \n");
printf(" 打印输出链表: 3 \n");
printf(" 写链表内容到文件: 4 \n");
printf(" 清空链表: 5 \n");
printf(" 退出: -1 \n");
printf(" 选吧: ");
}
void init_link(){
head = NULL;
tail = NULL;
temp = NULL;
}
void main(){
int op;
init_link();
while(1){
printUsage();
scanf("%d",&op);
if(op==-1)
break;
switch(op){
case 1:
manu_create_link();
break;
case 2:
read_file_to_link();
break;
case 3:
print_link();
break;
case 4:
save_link();
break;
case 5:
init_link();
break;
default:
printf("****非法输入****\n");
}
}
}
#include<stdio.h>
struct card{
char name[20];
char cardno[20];
char pwds[20];
double balance;
struct card*next;
};
void main(){
struct card*head,*tail,*temp;
head =NULL;
tail=NULL;
temp=NULL;
char cdn[20];
char pwd[20];
char nm[20];
double b;
while(1){
printf("请输入卡号、密码、姓名:\n");
scanf("%s %s %s",cdn,nm,pwd);
if(strcmp(cdn,"0")==0||strcmp(nm,"0")==0||strcmp(balance,"0")==0){
printf("OVER");
break;
}else{
temp=(struct card*)malloc(sizeof(struct card));
strcpy(temp->cardno,cdn);
strcpy(temp->name,nm);
strcpy(temp->pwds,pwd);
printf("请输入余额:\n");
scanf("%f",&balance);
if(balance<0){
printf("非法输入");
break;
}
}
}
}