• 大小: 172KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-06-23
  • 语言: C/C++
  • 标签:

资源简介

双向链表基本操作函数

资源截图

代码片段和文件信息

//关于双向链表的基本操作
#include 
#include 

#define MAXLIST 50

typedef enum boolean{FALSE TRUE} Boolean;

typedef char ListEntry;

//节点的声明
typedef struct listnode
{
 ListEntry entry; //数据项
 struct listnode  *next; //指向下一项的指针
 struct listnode  *previous;  //指向前一项的指针
}ListNode;

//链表的声明
typedef int Position;
typedef struct list
{
 int count;  //链表中一共有多少项
 ListNode *current; //指向链表当前位置的指针
 Position currentpos; //当前位置指针
}List;


/***********************************函数原型声明********************************************************/
void Error(char *s);
//定位双向链表的指针位置
void SetPosition(Position p List *list);
//在双向链表中插入一项
void InsertNode(Position p ListEntry x List *list);
//向系统申请节点内存函数
ListNode *MakeListNode(ListEntry x);
//删除双向链表的一个节点
void DeleteNode(Position p ListEntry *x List *list);
//创建一个双向链表
void CreateList(List *list);
//替换双向链表一个节点中的数据
void ReplaceNode(Position p ListEntry x List *list);
//取回双向链表一个节点的数据
void RetrieveNode(Position p ListEntry *x List *list);
//清除双向链表
void ClearList(List *list);
//链表是否为空
Boolean ListEmpty(List *list);
//链表的大小
int ListSize(List *list);
//遍历链表,利用函数指针逐一处理链表数据项
void TraverseList(List *listvoid(*Visit)(ListEntry x) );
//显示节点数据项目
void ShowItem(ListEntry x);




/***********************************函数定义*************************************************************/
void Error(char *s)
{
 printf(“%s\n“s);
}


//遍历链表,利用函数指针逐一处理链表数据项
void TraverseList(List *listvoid(*Visit)(ListEntry x) )
{
 int i;
 ListNode *current;

 if(list->count==0)
{ Error(“链表为空“); goto END; }

 
 SetPosition(0list);
 current=list->current;
 for(i=0; i<=list->count-1; i++)
 {
   (*Visit)(current->entry);
   current=current->next;
 }

 printf(“\n“);

END:
 ;
}


//显示节点数据项
void ShowItem(ListEntry x)
{
 printf(“%c“x);
}


int ListSize(List *list)
{
 return(list->count);
}


Boolean ListEmpty(List *list)
{
 if(list->count==0)
 return TRUE;
 else
 return FALSE;
}

Boolean ListFull(List *list)
{
 if(list->count==MAXLIST)
 return TRUE;
 else
 return FALSE;
}

//清除双向链表
void ClearList(List *list)
{
 int i;
 ListNode *DelNode;

 if(list->count==0) goto END;

 SetPosition(0list);
 for(i=0; i<=list->count-1; i++)
 {
  DelNode=list->current;
  list->current=list->current->next;
  free(DelNode);
 }

 list->count=0;
 list->current=NULL;
 list->currentpos=-1;

END:
 ;
}


//取回双向链表一个节点的数据
void RetrieveNode(Position p ListEntry *x List *list)
{
 //首先判断链表是否为空
 if(list->count==0)
 { Error(“链表为空“); goto END; }
 
 if(p<0 || p>=list->count)
 { Error(“要操作的位置超过链表范围“); goto END; }

 SetPosition(plist);
 *x=list->current->entry;

END:
 ;
}


//替换双向链表一个节点中的数据
void ReplaceNode(Position p ListEntry x List *list)
{
 //首先判断链表是否为空
 if(list->count==0)
 { Error(“链表为空“); goto END; }
 
 if(p<0 || p>=list->count)
 { Error(“要操作的位置超过链表范围“); goto END; }


 SetPosition(plist);
 list->curre

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     172136  2017-05-02 10:57  P164_List\Debug\P164_List.exe

     文件     230588  2017-05-02 10:57  P164_List\Debug\P164_List.ilk

     文件      14600  2017-05-02 10:57  P164_List\Debug\P164_List.obj

     文件     184788  2017-05-01 18:12  P164_List\Debug\P164_List.pch

     文件     435200  2017-05-02 10:57  P164_List\Debug\P164_List.pdb

     文件      33792  2017-05-02 10:57  P164_List\Debug\vc60.idb

     文件      53248  2017-05-02 10:57  P164_List\Debug\vc60.pdb

     文件       6989  2017-05-02 10:58  P164_List\P164_List.c

     文件       4385  2017-05-01 18:12  P164_List\P164_List.dsp

     文件        543  2017-05-01 18:10  P164_List\P164_List.dsw

     文件      50176  2017-05-02 10:59  P164_List\P164_List.ncb

     文件      53760  2017-05-02 10:59  P164_List\P164_List.opt

     文件       1346  2017-05-02 10:57  P164_List\P164_List.plg

     文件         78  2017-05-02 10:59  P164_List\注释文件.txt

     目录          0  2017-05-02 11:00  P164_List\Debug

     目录          0  2017-05-02 11:00  P164_List

----------- ---------  ---------- -----  ----

              1241629                    16


评论

共有 条评论

相关资源