线性表重点

Posted claudia529

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线性表重点相关的知识,希望对你有一定的参考价值。

第i个数据元素的存储位置是:LOC(ai)=LOC(a1)+(i-1)*m

线性表的表长表示为(*L).len或者L->len。第i个元素写为L->v[i-1]

单链表的头指针指向头结点称其为带头结点的单链接。若无特别说明,用的都是带头结点的单链表。

p->data表示p指向的结点的数据域。

p->next表示p指向的结点的指针域。

p=(Lnode *)malloc(sizeof(Lnode);

free(p)释放p所指向的结点空间。

单链表的相关操作

#include<stdio.h>
#include<stdlib.h>
typedef char elmentype;
typedef struct node

	elementype data;
	struct node *next;
Lnode,*linklist;//Lnode结点类型,linklist是指向结点的指针类型 

void main()

	Lnode *h;
	Lnode *creat();
	h = creat();

Lnode *creat()//头插法 

	elementype ch;
	h=(Lnode *)malloc(sizeof(Lnode));//建立头结点 
	h->next=NULL;//使头结点的指针域为空 
	while((ch=getchar(!)=‘\n‘))
	
		p=(Lnode *)malloc(sizeof(Lnode));//建立新结点p 
		p->data=ch;//ch赋给p的数据域 
		p->next=h->next;//改变指针状况 
		h->next=p;//h的直接后继是p 
	
	return h;

Lnode *creat()//尾插法 

	Lnode *h,*p,*t;
	elementype ch;
	h = (Lnode *)malloc(sizeof(Lnode));
	h->next=NULL;
	t=h;
	while((ch=getchar()!=‘\n‘));
	
		p=(Lnode *)malloc(sizeof(Lnode));
		p->data=ch;
		p->next=NULL;
		t->next=p;//t指向最后一个元素 
		t=p;
		
	return h;

int lenth(Lnode *h)

	Lnode *p;
	int i = 0;
	p = h->next;//p访问第一个结点
	while(p)
	
		i++;
		p=p->next;	
	 
	return i;


void insert(Lnode *p,elementype x)//值为x的结点插在p后

	Lnode *s;
	s = (Lnode *)malloc(sizeof(Lnode));//生成结点s 
	s->data = x;	
	s->next = p->next;
	p->next = s;
 
int insert(Lnode *h,int i,elementype x)//第i个元素中插入一个元素 

	Lnode *p,*s;
	int j=0;
	p=h;
	while(p&&(j<i-1))//找第i-1个结点 
	
		p=p->next;
		j++;
	
	if(p)
	
		s = (Lnode *)malloc(sizoef(Lnode));
		s->data=x;
		s->next=p->next;
		p->next=s;
		return 1;
	
	else 
		return 0;

void dele(Lnode *p)

	Lnode *p;
	if(p->next!=NULL)
	
		q=p->next;//q是p的后继 
		p->next=q->next;//删除q 
		free(q);
	

  

以上是关于线性表重点的主要内容,如果未能解决你的问题,请参考以下文章

线性表—顺序表

线性表—顺序表

线性表—顺序表

数据结构 重点详解

线性表

线性表的插入操作实现