#include<stdio.h>
#include<malloc.h>
typedef struct Student{
int data;
struct Student* Next;
}Node,*PNode;
//创建链表
PNode creatList(void){
printf("请输入链表的值:\n");
printf("输入0退出");
PNode head,node;
int n;
head=(PNode)malloc(sizeof(Node));
head->Next=NULL;
scanf("%d",&n);
while(n!=0){
node=(PNode)malloc(sizeof(Node));
node->data=n;
node->Next = head->Next;
head->Next=node;
scanf("%d",&n);
}
return head;
}
//打印链表
void printflist(PNode x){
PNode p=x;
while(p->Next!=NULL){
printf("%d ",(p->Next)->data);
p=p->Next;
}
}
//选定链表
void insertlist(PNode x){
PNode p=x;
int n;
printf("请输入选定的位置\n");
scanf("%d",&n);
for(int i=1;i<=n;i++){
p=p->Next;
}
printf("所选定节点的值为:%d",p->data);
}
//插入链表
void insertlist1(PNode x,int number){
PNode p=x;
PNode node;
PNode ssss;
int a;
node=(PNode)malloc(sizeof(Node));//分配空间
printf("请选择要替换元素的位置\n");
scanf("%d",&a);
int n=number;
for(int i=1;i<n;i++){
p=p->Next;
}
ssss=p->Next->Next;
p->Next=node;
node->Next=ssss;
node->data=a;
}
//删除元素
void deletelist(PNode x){
printf("请选择要删除的元素的位置:");
int m;
scanf("%d",&m);
PNode p=x,rear;
for(int i=1;i<m;i++){
p=p->Next;
}
rear=p->Next->Next;
p->Next=rear;
}
//置零链表
void setzerolist(PNode x){
PNode p=x;
while(p!=NULL){
p->data=0;
p=p->Next;
}}
//合并链表
PNode unionlist(PNode a,PNode b){
PNode p1,p2,p3;
p1=a;
p3=p1;
p2=b;
while(p1->Next!=NULL){
p1=p1->Next;
}
p1->Next=p2->Next;
p1=p3;
return p1;
}
//插入链表
void insertlist3(PNode x){
PNode p=x;
PNode node;
node=(PNode)malloc(sizeof(Node));//分配空间
int n,m;
printf("选择您要插入的位置:\n");
scanf("%d",&n);
printf("请输入您要插入的元素:\n");
scanf("%d",&m);
node->data=m;
for(int i=1;i<n;i++){
p=p->Next;
}
node->Next=p->Next;
p->Next=node;
}
//置空表
void clearlist(PNode p){
p->Next=NULL;
}
int main(){
PNode list1;
list1=creatList();
printflist(list1);
printf("\n");
insertlist3(list1);
printflist(list1);
return 0;
}
C语言之先进后出单链表
最新推荐文章于 2024-07-13 18:26:36 发布