/*
* func.c
*
* Created on: 2012-12-8
* Author: wzm
*/
#include"head.h"
void Init(pList mylist)
{
mylist->size=0;
mylist->head.next=NULL;
mylist->head.s=NULL;
}
int Create(pList mylist)
{
pNode tmp=&mylist->head;//先儲存一下頭結點
int i=0;
while(i<7)//建立多少個,就設定i為多少,不過也可以自動新增
{
i++;
pNode p=(pNode)malloc(sizeof(pNode));//構造空間
if(&mylist->head==NULL)
{
mylist->head=*p;
p->s=NULL;
mylist->size++;
p->next=NULL;
tmp=&mylist->head;
}
else
{
tmp->next=p;//在棧空間裡面每一次呼叫原來建立的內容會被銷燬,為了防止這個只能用堆空間裡面的malloc來開闢空間,這個是會一直儲存的,
p->s=NULL;//將要放的那個元素 讓所在原來位置的值的下一個節點所指向,
mylist->size++;
p->next=NULL;//指向尾節點
tmp=tmp->next;//讓所在原來位置的值的下一個節點所指變成現在所在的節點,這就有利於下一次建立連結串列
}
}
printf("%d 個數\n",mylist->size);
return mylist->size;//返回成功錄入的元素的個數
}
void FileToLink(char *s,pList mylist)
{
FILE *fp;
char str[1024];
fp=fopen(s,"a+");
if(fp==NULL)
{
puts("檔案不能開啟");
return ;
}
pNode p=mylist->head.next;
while(fgets(str,1024,fp)!=NULL&&p!=NULL)
{
if(p==NULL)
{
puts("??");
p=(pNode)malloc(sizeof(pNode));
mylist->size++;
}
p->s=(char *)malloc(sizeof(char)*1024);
printf("---------%s\n",str);
strcpy(p->s,str);
printf("---------%s\n",p->s);
p=p->next;
}
printf("size=%d\n",mylist->size);
fclose(fp);
}
void Display(pList mylist)
{
pNode p=mylist->head.next;
if(p==NULL)
{
puts("連結串列為空!");
return ;
}
else
{
while(p)
{
puts("---------------1111----------------");
printf("------------------------%s",p->s);
p=p->next;
}
if(p==NULL)
{
puts("便歷結束!");
}
}
}
/*
* head.h
*
* Created on: 2012-12-8
* Author: wzm
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct _D_Node
{
char *s;
struct _D_Node *next;
}Node,*pNode;
typedef struct _D_List
{
unsigned size;
struct _D_Node head;
}List,*pList;
void FileToLink(char *s,pList mylist);
void Display(pList mylist);
int Create(pList mylist);
file.txt檔案
many
soga
what
hahah
yoyo
zeaze
lovemany
執行結果:
7 個數
---------many
---------many
---------soga
---------soga
---------what
---------what
---------hahah
---------hahah
---------yoyo
---------yoyo
---------zeaze
---------zeaze
---------lovemany
---------lovemany
size=7
---------------1111----------------
------------------------many
---------------1111----------------
------------------------soga
---------------1111----------------
------------------------what
---------------1111----------------
------------------------hahah
---------------1111----------------
------------------------yoyo
---------------1111----------------
------------------------zeaze
---------------1111----------------
------------------------lovemany便歷結束!