数据结构知识点总结 下载本文

{

j<=j-1;

if(A[j]

{

A[i]<=A[j];

i<=i+1; }

while(A[i]=x) { A[j]

<=A[i];

j<=j-1; }

插入a1:*p=a1; 改为:p->date=a1;指针p指向对象date=a1,该对象是一个结构体,指向结构体里a1那部分 删除a1并把存储空间解放:free(p);

二、链表的构造q<=NULL; for(j=n;i>=1;i--) {

p<=(NODE*)malloc(sizeof(NODE));

p->date<=an; 将an替换为ai 注:i此处为n-1 p->next<=NULL;把指针设为空指针,替换为q q<=p; }

考虑链表的头指针 当ai未插入时: 算法:

CreatLinkList(n) 构造链表,n为节点 {

q<=NULL; for(i=n;i>=1;i--) {

p<=(NODE*)malloc(sizeof(NODE)); scanf(ai); p->date<=ai; p->next<=q; q<=p; }

return(p); }

注:此时p、q一样∵已被赋值给对方

作业4:倒过来。 从前节点到后节点。 头指针head p<=head; 从头指针出发,依次输出节点。

可用for循环或while循环(不确定循环次数时用) p<=head; while(p=\\NULL) {

printf(p->data); p<=p->next; }

三、链表的插入算法:

假定:在表中值为x的节点前面插入一个值为y的节点。 分析:1.空链

2.表中第1个节点的值为x 3.表中有一个值为x的节点 4.表中没有值为x的节点 5.表中有多个值为x的节点。

NODE*InsertLinkList(head,x,y) {

q<=(NODE*)malloc(sizeof(NODE)); q->data<=y; q->next<=NULL; if(head=NULL) head<=q;

else if(head->date=x) {

q->next<=head; head<=q; } else { r<=head; p<=head->next;

while(p->data=/x and p=\\NULL) p<=p->next;