系统学习图像算法Day.6——数据结构学习——接上篇——线性结构(“单链表”代码复现)

利用节假日,把前几天在书本与视频中学的线性结构自己动手在Visual Studio中用C或者C++语言复现一遍,在实践中加深对数据结构的理解与掌握。

链式存储(单链表)

#include <stdlib.h>
#include <stdio.h>

#ifndef _List_H

struct Node;
typedef struct Node *PtrToNode;
typedef PtrToNode List;
typedef PtrToNode Position;
typedef List ElementType;
List initial();
List LastInsert(ElementType X,List L);
List MakeEmpty (List L);
int IsEmpty(List L);
int IsEmpty(List L);
void PrintList(List L);
Position Find(ElementType X,List L);

#endif 

struct Node
{
 ElementType Element;
 Position Next;
};

List initial()
{
  List L;
  L = (List)malloc(sizeof(List));
  L->Element = 0;
  L->Next = NULL;
};

List LastInsert(ElementType X,List L)
{
 Position P,Tmp;
 P = (List)malloc(sizeof(List));
 Tmp = (List)malloc(sizeof(List));
 
 if(L->Next==NULL)
 {
 Tmp->Element = X;
 Tmp->Next = NULL;
 L->Next = Tmp;
 printf("第一种情况\n");
 }
 else
 {
    P = L;
    while(P->Next != NULL)
       P = P->Next;
      
   Tmp->Element = X;
   Tmp->Next = NULL;                   //非常重要且不可或缺的一行!!!!
   P->Next = Tmp;
   printf("第二种情况\n");
 }

return L;
}

List MakeEmpty (List L)
{
 L->Next = NULL;
 return L;
};

int IsEmpty(List L)
{
 return L->Next == NULL;
};

Position Find(ElementType X,List L)
{
 Position P;
 P = L->Next;
 while (P!=NULL && P->Element !=X)
  P = P->Next;
 return P;
};

void PrintList(List L)                     
{
   
    if (L->Next == NULL) 
        {
            printf("空链表");
            return;
         }
      
  while (L != NULL)
  {
   printf ("%d\n",L->Element);
   L = L->Next;
   }
 }

int main()
{
 int a,b;
 List L = initial();

 for(b=5;b<14;b++)
 L = LastInsert(b,L);

 PrintList(L);

 a = IsEmpty(L);
 
 printf("%d",a);
 getchar();
 return 0;
}

//这个代码是我自己根据对单链表的理解,
//用最直白的语言写的,
//旨在加深对数据结构的理解,
//所以难免有写的粗糙的地方,
//若有机会,我以后会改进。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值