数据结构之链表(一)

原创 2007年09月13日 23:56:00

线性表分为顺序存储结构和链式存储结构2种。

顺序存储结构的特点:任何一个元素都可以进行随即存取,存取速度高。但不适合濒繁的插入和删除操作。

链式存储结构(链表):不可以随即存取元素。但适合频繁的插入和删除操作。

一个静态链表的例子:

#include<stdio.h>
struct node
{
 int data;
 struct node *next;
};
typedef struct node nodeType;
int main()
{
 nodeType sOne,sTwo,sThree, *begin, *p;
 clrscr();
 sOne.data = 1;
 sTwo.data = 2;
 sThree.data = 3;
 begin = &sOne;
 sOne.next = &sTwo;
 sTwo.next = &sThree;
 sThree.next = '/0';
 p=begin;
 while(p)
 {
  printf("%d ",p->data);
  p=p->next;
 }
 printf("/n");
 getch();
 return 0;
}

一个动态链表的例子:

#include<stdio.h>
#include<alloc.h>
typedef struct node
{
 int data;
 struct node *next;
}nodeType;
nodeType *CreateList()     /*这个方法的作用:返回头指针(头结点),头结点没有数据域*/
{
 int i;
 nodeType *begin,*end,*current;
 begin = (nodeType *)malloc(sizeof(nodeType));
 end = begin;
/* begin->data = 1000;*/
 scanf("%d",&i);
 while(i!=-1)    /*输入为-1时,退出循环*/
 {
  current = (nodeType *)malloc(sizeof(nodeType));
  current->data = i;
  end->next = current;
  end = current;
  scanf("%d",&i);
 }
 end->next = '/0';
 return begin;
}
int main()
{
 nodeType *head;
 head = CreateList();
 while(head)
 {/* 顺序访问链表中各结点的数据域*/
  printf("%d ",head->data);   /*头结点没有数据域,所以打印头结点时,数据是随即的。 
  head=head->next;

 /* head = head->next;
  printf("%d ",head->data);
 */
 }
 getch();
 return 0;
}

实际应用中动态链表更为常用。

相关文章推荐

数据结构-基本算法-单链表

  • 2017年05月21日 18:46
  • 5KB
  • 下载

多核计算与程序设计 - 05 基本算法和数据结构 之二 多线程链表

链表是数据结构中的基础知识,这里不做详细说明。这里说的多线程链表主要是对链表的访问加了一些互斥等访问控制,使多线程可以安全的访问链表。 多线程链表中有锁,用来保障线程对队列的访问时的互斥性。 此程...

数据结构 非循环链表源码

  • 2015年05月19日 11:22
  • 537KB
  • 下载

数据结构链表

  • 2014年12月15日 16:28
  • 2KB
  • 下载

数据结构学习之双向循环链表的基本操作(非递归实现)

【摘要】前一篇博客阐述了循环单链表,它虽然能够实现从任一结点出发沿着链能找到其前驱结点,但时间耗费是O(n)。如果希望从表中快速确定某一个结点的前驱,另一个解决方法就是在单链表的每个结点里再增加一个指...

数据结构——动态链表(C++)

定义一个节点:#include using namespace std; typedef int T; struct Node{ T data; Node* next; Node(cons...

双链表数据结构

  • 2015年04月25日 22:38
  • 3KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据结构之链表(一)
举报原因:
原因补充:

(最多只允许输入30个字)