线性表的实现分为顺序存储实现和链式存储实现,本文将主要讲述链式存储,线性存储将在下一篇讲述。通过链式存储实现对线性表的各项操作,包括初始化、创建、获取特定位置上的元素、获取线性表长度、插入、删除、定位Locate、销毁、合并两个链表以及单链表的就地逆置。
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
typedef struct node{
int data;
struct node *next;
}linkList;
void initList(linkList*L)//初始化
{
L=(linkList*)malloc(sizeof(linkList));
L->next=NULL;
}
void creatList(linkList*L)//创建
{
linkList*s,*last;
int temp;
last=L;
while((temp=getchar())!='#')
{
s=(linkList*)malloc(sizeof(linkList));
s->data=temp-'0';
s->next=NULL;
last->next=s;
last=s;
}
}
void printList(linkList*L)//打印
{
linkList*p;
p=L->next;
while(p!=NULL)
{
printf("%4d",p->data);
p=p->next;
}
printf("\n");
}
void getElem(linkList*L, int n)//获取特定位置上的元素,n表示线性表位置
{
linkList *p;
p=L->next;
int i=1;
while (i<n)
{
p=p->next;
i++;
}
print