链表删除操作:
#include<stdio.h>
#include<stdlib.h>
#define MAXN 10000
typedef struct Node
{
char c;
struct Node *Next;
}Node,*LNode;
void Delete(LNode head,char c)
{
LNode p,q,s;
q=head;
p=head->Next;
while(p)
{
if(p->c==c)
{
s=p;
q->Next=p->Next;
p=p->Next;
free(s);
}
else
{
q=q->Next;
p=p->Next;
}
}
}
int main()
{
LNode head=NULL,p=NULL,q=NULL;
char c;
head=(LNode)malloc(sizeof(Node));
head->Next=NULL;
p=q=head;
while( (c=getchar())!='\n' )
{
p=(LNode)malloc(sizeof(Node));
p->c=c;
q->Next=p;
p->Next=NULL;
q=p;
}
printf("请输入你要删除的元素:");
scanf("%c",&c);
Delete(head,c);
p=head->Next;
while(p)
{
printf("%c",p->c);
p=p->Next;
}
}
注意Delete()里面的内容 q所指元素是p所指元素的前一个元素
多项式如何表示?
直接用数组 分量代表系数 下标表示未知量的次数
用结构数组 分量代表系数和未知量的次数
用链表表示
多项式表示问题的启示
1.同一个问题可以有不同的表示(存储)方法
2.有一类共性问题:有序线性序列的组织和管理
“线性表”:由同类型数据元素构成有序序列的线性结构
表中元素个数称为线性表的长度
线性表没有元素时,称为空表
表起始位置称表头,表结束位置称表尾
线性表的抽象数据类型描述:
类型名称:线性表
数据对象集:线性表是n(>=0)个元素构成的有序序列
操作集:
线性表的顺序存储实现
利用数组的连续存储空间顺序存放线性表的各元素
线性表的链式存储实现:
不要求逻辑上相邻的两个元素物理上也相邻:通过”链“建立起数据元素之间的逻辑关系
插入,删除不需要移动数据元素,只需要修改”链“
什么是广义表?结构怎么实现?
什么是多重链表?
稀疏矩阵用什么方式表示省空间?
稀疏矩阵用十字链表表示图
什么是栈?
栈的顺序存储实现(出栈 入栈等操作)
一个数组实现两个堆栈及其操作实现
栈链式实现