发新话题
打印

链表的应用[转自CSDN]

链表的应用[转自CSDN]

设计链表应用程序,要求完成如下操作功能(1)建立一个链表;(2)输出链表各节点的元素值;(3)在链表中从左往右第一个数据为data的链结点前插入一个结点;(4)删除线性链表中从左往右第一个数据为data的链结点;(5)逆转该线性链表。在完成上术基本要求的操作后,要应用功能(2)进行测试。


#include <stdio.h>

#include <stdlib.h>

typedef
struct Link
{
   
int data;
  Link
*next;     
}Link,
*pLink;

void insert(pLink *list, int data)
{
   
if(list == NULL)
    {
        (
*list) = (pLink )malloc(sizeof(struct Link));
        (
*list)->data = data;
        (
*list)->next = NULL;
    }
   
else
    {
        pLink pt
= (pLink)malloc(sizeof(struct Link));
        pt
->data = data;
        pt
->next =
*list;
        
*list = pt;
    }
}

pLink Create_List(
void)
{
    pLink list;
   
int data;
    printf(
"Please input the list's data (-1 for end inputing):\n");
    scanf(
"%d",&data);
   
while(-1
!= data)
    {
        insert(
&list, data);
        scanf(
"%d",&data);
    }
   
return list;
}

bool delete(pLink *list)
{
    pLink pt
= (pLink)malloc(sizeof(struct Link));
   
if((*list) == NULL)
        
return
false;
    pt
=
*list;
    (
*list) = (*list)->next;
    free(pt);
    pt
= NULL;
   
return
true;
}


void reverse(pLink *list)
{
    pLink p1,p2;
   
if( (*list) == NULL )
        
return;
   
if( (*list)->next == NULL )
        
return;
    p1
= (*list)->next;
    p2
= p1->next;
   
while(NULL != p2)
    {
        (
*list)->next = NULL;
        p1
->next =
*list;
        
*list = p1;
        p1
= p2;
        p2
= p2->next;
    }
   
   
*list = p1;
   
return;
}


bool delete(pLink *list)
{
    pLink pt = (pLink)malloc(sizeof(struct Link));
    if((*list) == NULL)
        return false;
    pt = *list;
    (*list) = (*list)->next;
    free(pt);
    pt = NULL;
    return true;
}

悟空,其实当年我很想留在女儿国的。。。吾悔不听八戒之言呐!

TOP

学了java后更加讨厌c++的结构。我们数据结构课中的链表的ADT:
// Singly-linked list node
template <class Elem> class Link {
public:
  Elem element; // Value for this node
  Link *next;   // Pointer to next node
  Link(const Elem& elemval,
       Link* nextval =NULL)
    { element=elemval; next=nextval; }
  Link(Link* nextval =NULL)
    { next = nextval; }
};

TOP

我还是更喜欢C/C++的风格。
悟空,其实当年我很想留在女儿国的。。。吾悔不听八戒之言呐!

TOP

发新话题