您的位置:首页 > 其它

带头结点的单链表的基本操作

2020-04-05 18:18 337 查看
//单链表的结点定义
typedef struct Node
{
Datatype data;   //Datatype为数据类型,可以根据定义为intc,char等
struct Node *next;//node的下一个结点仍是一个结构体(即包含data和*next)
}LinkedList;
//单链表的初始化
LinkedList LinkedListInit(){
Node *L;
L=(Node *)malloc(sizeof(Node));
if(L==NULL){
printf("申请内存空间失败\n");
}
L->next=NULL;
return L;
}
//单链表的建立,头插法
LinkedList ListedListGreat(){
Node *L;
L=(Node *)malloc(sizeof(NOde());//申请头结点空间
L->next=NULL;//初始化一个空链表
ElemType x;
while(scanf("%d",&x)!=EOF){
Node *P//申请新的结点
p=(Node *)malloc(sizeof(Node));
p->data=x;//结点数据域赋值
L->next=p->next;//将结点插到表头
L->next=p;
)
return L;
}
//单链表的插入,在链表的第i个位置插入x元素
LinkedList LinkListInsert(LinkedList L,int i,ElemType x){
Node *pre;//pre是前驱结点
pre=L;
int tempi=0;
for(int tempi=1;temoi<i;tempi++){
pre=pre->next;
}
Node *P;
p=(Node *)malloc(sizeof(Node));
p->data=x;
p->next=pre->next;
pre->next=p;
return L;
}
//单链表的删除操作,在链表中删除值为x的元素
LinkedList LinkedListDelete(){LinkedList L,ElemType x){
Node *P,*pre;//pre为前驱结点,p为查的结点
p=L->next;
while(p->data!=x){
pre=p;
p=p->next;
}
pre->next=p->next;
free(P);
return L;
};
int main(){
LinkedList list,start;
printf("请输入单链表的数据: ");
list=LinkedListGreatH();
for(start=list->next;start!=NULL';start=start->next){
printf("%d",start->data);
}
printf("\n");

int i;
ElemType x;
printf("请输入插入数据的位置: ");
scanf("%d",&i);
printf("请输入插入数据的值:");
scanf("%d",&x);
LinkedListInsert(list,i,x);
for(start=list->next;start!=NULL;start=sstart->next){
printf("%d",start->data);
}
printf("\n");
return 0;
}
  • 点赞
  • 收藏
  • 分享
  • 文章举报
加油加油加油加油加油 发布了2 篇原创文章 · 获赞 0 · 访问量 37 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: