单向链表

来源:互联网 发布:手机淘宝差评怎么写 编辑:程序博客网 时间:2024/06/05 19:32

链表中的数据是以节点来表示的,每个节点的构成:元素(数据元素的映象) +指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个节点的地址数据。

以“结点的序列”表示线性表称作线性链表(单链表)
单链表是链式存取的结构,为找第 i 个数据元素,必须先找到第 i-1 个数据元素。
因此,查找第 i 个数据元素的基本操作为:移动指针,比较 j 和 i
单链表
1、链接存储方法
链接方式存储的线性表简称为链表(Linked List)。
链表的具体存储表示为:
① 用一组任意的存储单元来存放线性表的结点(这组存储单元既可以是连续的,也可以是不连续的)
② 链表中结点的逻辑次序和物理次序不一定相同。为了能正确表示结点间的逻辑关系,在存储每个结点值的同时,还必须存储指示其后继结点的地址(或位置)信息(称为指针(pointer)或链(link))

单向链表

#include <iostream>
#include <stdlib.h>
#include <string.h>
using namespace std;

//创建单链表
typedef struct student
{
    int data;
    struct student *next;
}node;

node * creat(){
    node *head,*p,*s;
    int x,cycle = 1;
    head = (node *)malloc(sizeof(node));
    p = head;
    while(cycle){
        cout <<"please input data"
        cin >> x;
        if(x!=0){
            s = (node *)malloc(sizeof(node));
            s->data = x;
            cout<<s->data;
            p->next = s;
            p = s;
        }
        else cycle = 0;
    }
    head = head->next;
    p->next = null;
    printf ("\n yyy %d",head->data);
    return(head);
}
//测长
int length(node *head){
    int n = 0;
    node *p;
    p = head;
    while(p!=null){
        p->next = p;
        n++;
    }
    return(n);
}
//打印
void print(node *head){
    node * p ,int n;
    n = length(node *head);
    printf("n\These %d recodes are :\n",n);
    p = head;
    if (head!= null)
    while (head!=null)
    {
        printf("\n uuu %d",p->data);
        p=p->next;
    }        
}

0 0
原创粉丝点击