这是我第一次在CSDN上发博客,这是我的处女贴哦~~~~
//List.h
#ifndef LIST_H_INCLUDED #define LIST_H_INCLUDED ///与typedef的相关知识还不是很了解,要多加强!! typedef struct Node Node; typedef struct Node *PtrToNode; /********** 此链表与一般的实现不一样的地方在此,把指针隐藏起来, 即typedef PtrToNode List; 而常规的定义为 typedef struct Node { int data; struct Node *next; }List; 若这样的话,初始化函数就必须用二级指针,很不方便 即void ListInitia(List **list); **********************/ typedef PtrToNode List; typedef PtrToNode Position; typedef int DataType; struct Node { DataType data; Position next; }; void ListInitia(List *list); int ListInsert(List list,int index,DataType x); void ListPrint(List list); void ListDel(List *list); #endif // LIST_H_INCLUDED
//List.cpp #include<stdlib.h> #include<stdio.h> #include"List.h" /************** 注意void ListInitia(List *list)的实现过程 ****************/ void ListInitia(List *list) { *list=(List)malloc(sizeof(Node)); (*list)->data=100; (*list)->next=NULL; } int ListInsert(List list,int index,DataType x) { List TmpList=list; if(index<0) return 0; int i=0; while((TmpList->next!=NULL)&&(index!=i)) { i++; TmpList=TmpList->next; } List NewList=(List)malloc(sizeof(Node)); NewList->data=x; NewList->next=NULL; TmpList->next=NewList; return 1; } void ListPrint(List list) { List TmpList=list; while(TmpList->next) { TmpList=TmpList->next; printf("%d\t",TmpList->data); } } //此处的实现是否正确,有没有内存泄漏?? void ListDel(List *list) { List TmpList=*list; List tmp; while(!TmpList->next) { tmp=TmpList; TmpList=TmpList->next; free(tmp); } }
//测试文件#include <stdio.h> #include <stdlib.h> #include "List.h" int main() { List list=NULL; //list 是一个指针 ListInitia(&list); int i; for(i=0;i<10;i++) ListInsert(list,i,i+10); ListPrint(list); ListDel(&list); return 0; }
以上是我个人自己写的,不知道有没有错误,如果有,欢迎指出.....