1 #include<stdio.h> 2 #include<stdlib.h> 3 typedef struct node{ 4 int data; 5 struct node *next; 6 }Node,*LinkList; 7 8 /*创建一个新链表*/ 9 void CreatList_L(LinkList &L,int n) 10 { 11 int a; 12 L = (LinkList)malloc(sizeof(Node)); 13 L->next = NULL;//建立一个带头结点的单链表 14 Node *q = L; 15 for(int i=0;i<n;i++) 16 { 17 Node *p = (LinkList)malloc(sizeof(Node)); 18 scanf("%d",&a); 19 p->data = a; 20 q->next = p; 21 p->next=NULL; 22 q = q->next; 23 } 24 } 25 26 /*在链表的第i处插入一个元素*/ 27 void Push_L(LinkList &L, int data, int i) 28 { 29 Node *p = L; 30 int j = 1; 31 while(p&&j<i) 32 { 33 p=p->next; 34 ++j; 35 } 36 Node *q = (LinkList)malloc(sizeof(Node)); 37 q->data = data; 38 q->next = p->next; 39 p->next = q; 40 } 41 42 /*删除第i个元素*/ 43 void Delete_L(LinkList &L,int i) 44 { 45 Node *p = L; 46 if(i<0) 47 printf("INFEASIBLE"); 48 int j = 1; 49 while(p&&j<i) 50 { 51 p=p->next; 52 ++j; 53 } 54 Node *q = p->next; 55 p->next = p->next->next; 56 free(q); 57 } 58 void Traverse_L(LinkList &L) 59 { 60 LinkList p = L->next; 61 while(p!=NULL){ 62 printf("%d ",p->data); 63 p = p->next; 64 } 65 printf("\n"); 66 }//正序遍历整个链表 67 68 int main() 69 { 70 LinkList L; 71 int n; 72 printf("输入要创建的链表中的元素个数:\n"); 73 scanf("%d",&n); 74 printf("输入%d个元素:\n",n); 75 CreatList_L(L,n); 76 printf("遍历整个链表\n"); 77 Traverse_L(L); 78 79 int push_data,push_i; 80 printf("输入你想要插入的元素和它的插入位置:\n"); 81 { 82 scanf("%d%d",&push_data,&push_i); 83 } 84 Push_L(L, push_data, push_i); 85 printf("插入后的链表遍历为:\n"); 86 Traverse_L(L); 87 88 int del_i; 89 printf("输入要删除链表中的第几个元素:\n"); 90 scanf("%d", &del_i); 91 Delete_L(L, del_i); 92 93 printf("删除后的链表遍历为:\n"); 94 Traverse_L(L); 95 return 0; 96 }
from--------https://blog.csdn.net/karry_zzj/article/details/69787460
原文:https://www.cnblogs.com/zytwan/p/9311817.html