typedef struct Node{
int data;
struct Node *next;
}Node;
void initList(Node **p){
*p = (Node *)malloc(sizeof(Node));
(*p)->next = NULL;
}
Node *creatNode(int x){
Node *t = (Node *)malloc(sizeof(Node));
t->data = x;
t->next = NULL;
return t;
}
int getLength(Node *p){
Node *t = p;
int length = -1;
while(t){
length++;
t = t->next;
}
return length;
}
Node *find(Node *p, int n){
Node *t = p;
int len = getLength(p);
if(p->next){
if(n > len)
return NULL;
else if(n >= 0){
int index = 1;
while(index < n){
index++;
t = t->next;
}
return t;
}
else
return NULL;
}
else{
if(n == 0)
return t;
}
return NULL;
}
int insert(Node *p, int x, int n){
int len = getLength(p);
if(p->next){
if(n > len)
return -1;
else if(n >= 1) {
Node *q = find(p, n-1);
Node *t = creatNode(x);
t->next = q->next;
q->next = t;
return 1;
}
else
return -1;
}
else{
if(n == 1){
Node *t = creatNode(x);
p->next = t;
return 1;
}
else
return -1;
}
}
void printList(Node *p){
Node *t = p->next;
while(t){
printf("%d\n", t->data);
t = t->next;
}
}
链表(带有头节点)
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 前沿:链表是面试中经常问道的知识点,比如链表反转,就地反转,判断单链表是否相交,判断链表是否有环等都是常问的问题....