#include <stdio.h>
#include <stdlib.h>
typedef struct Node{
int data;
struct Node *next;
}Node,*List;
//创建链表
void Init(List *phead){
*phead = NULL;
}
//获取表长
int GetLength(List head){
int count = 0;
Node *p;
p = head;
while(p){
count++;
p = p->next;
}
return count;
}
//创建节点
Node *CreatNode(int x){
Node *t;
t = (Node *)malloc(sizeof(Node));
t->next = NULL;
t->data = x;
return t;
};
//输出链表
void Print(List head){
while(head){
printf("%d\n",head->data);
head = head->next;
}
}
//查找
Node *Find(List head, int k){
Node *p;
p = head;
int count = 1;
while(p && count < k){
p = p->next;
count++;
}
return p;
};
//插入
int Insert(List *phead, int k, int x){
Node *p,*t;
t = CreatNode(x);
if(*phead){
if(k <= 0)
return -1;
else if( k == 1){
t->next = *phead;
*phead = t;
return 1;
}
else{
p = Find(*phead,k-1);
t->next = p->next;
p->next = t;
return 1;
}
}
else{
if(k == 1){
*phead = t;
return 1;
}
else
return -1;
}
}
//删除
int Delet(List *phead, int k ,int *px){
Node *p,*t;
p = *phead;
if(p){
if(k <= 0)
return -1;
else if(k == 1){
*px = p->data;
*phead = p->next;
return 1;
}
else{
p = Find(*phead,k-1);
*px = p->next->data;
t = p->next;
p->next = t->next;
free(t);
return 1;
}
}
else
return -1;
}
链式表
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 一、关键点 1. 传Linklist *L 和 LinkList L区别; 区别L是指向定义的Node结构体指针的...
- 链式基数排序 说明: 适用于棋牌游戏发牌之后的排序,数量在十几到二十几之间 思路: 服务端发的牌是无序的,我们需要...
- 我们分别从存储分配方式,时间性能,空间性能三方面来作对比。 存储分配方式: 顺序存储结构用一段连续的存储单元一次存...