【数据结构】-线性表 一些要注意的地方
发布时间:2020-12-15 05:55:18 所属栏目:安全 来源:网络整理
导读:一些注意点 链表的引用型为List *La 不用引用型是 List *La 顺序表引用型为List La 不用引用型是 List La Tips:用* a时,如果链表a指向的节点地址本身不变,则用* a即可,比如插入时,只对a后面的节点插入,而a指针指向的节点不变,用* a即可。 如果顺序表用a
一些注意点
如果顺序表用&a,如果是添加删除都必须用&a,因为顺序表是数组形式,改变其中一个,也使得顺序表改变。 如果这样写:
- void fun(LinkList &La,LinkList La)**等价于** - void fun(Node *&La,Node *La)(引用型,非引用型)
写法 《数据结构高分笔记》建议用 方法一
typedef struct LNode { ElemType data; struct LNode *next; }LNode; LNode *List;
typedef struct LNode { ElemType data; struct LNode *next; }LNode,*LinkList; LinkList List; 与LNode *Node; List与Node是一样的
struct LNode { ElemType data; struct LNode *next; }; typedef struct LNode *LinkList;
void printDLNode(DLNode *L)
{
DLNode *q;
q=L->next;
int i=0;
while(q!=L)// 如果q=L 则是循环完一遍链表了
{
if(i++)//good idea!
{
putchar(' ');
}
printf("%d",q->data);
q=q->next;
}
printf("n");
}
void reverseList(LNode *&L)//头插即可反转
{
LNode *q,*s;
q=L->next;//必须指向L的下一个节点,否则下一步L->next=NULL会让q变成空表
L->next=NULL;
while(q!=NULL)
{
s=q->next;//一定要放在第一句,不能放在倒数第二句,因为头插之后,q的位置发生了变化,s不是指向期望的值
q->next=L->next;
L->next=q;
//s=q->next;
q=s;
}
}
B=(LNode *)malloc(sizeof(LNode)); B->next=NULL; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |