前言
大二,刚刚开始学数据结构与算法,写得不好....
单链表
带头节点单链表的增删改查
#include <stdio.h>
#include <stdlib.h>
typedef struct LinkNode{
int data;
struct LinkNode *next;
}LinkNode;
LinkNode * InitLink(int n){
int i,j;
LinkNode * head=(LinkNode*)malloc(sizeof(LinkNode));
LinkNode * temp=head ;
for (i=0; i<n; i++) {
LinkNode *newNode=(LinkNode*)malloc(sizeof(LinkNode));
scanf("%d", &j);
newNode->data=j;
newNode->next=NULL;
temp->next=newNode;
temp=temp->next;
}
return head;
}
LinkNode * InsElem(LinkNode * Node,int i,int x){
LinkNode * temp=Node;
int j;
for (j=0; j<i; j++) {
if (temp==NULL) {
printf("插入的位置无效\n");
return Node;
}
temp=temp->next;
}
LinkNode * InsNode=(LinkNode*)malloc(sizeof(LinkNode));
InsNode->data=x;
InsNode->next=temp->next;
temp->next=InsNode;
return Node;
}
LinkNode * DelElem(LinkNode * Node,int i){
LinkNode * temp=Node;
int j;
for (j=0; j<i; j++) {
if (temp==NULL) {
printf("删除的位置无效\n");
return Node;
}
temp=temp->next;
}
LinkNode * del=temp->next;
temp->next=temp->next->next;
free(del);
return Node;
}
void display(LinkNode *Node){
LinkNode* temp=Node;
printf("显示:");
while (temp->next) {
temp=temp->next;
printf("%d ",temp->data);
}
printf("\n");
}
int main() {
int i, x, n;
printf("初始化并创建链表:");
scanf("%d", &n);
LinkNode *node = InitLink(n);
display(node);
printf("选择插入位置和元素:");
scanf("%d %d", &i, &x);
node = InsElem(node, i, x);
display(node);
printf("选择删除的位置:");
scanf("%d", &i);
node = DelElem(node, i);
display(node);
return 0;
}
总结
就离谱 数据结构确实难。
作者:Kkoo
链接:https://www.pwwwp.com/
著作权归作者所有。商业转载请联系作者进行授权,非商业转载请注明出处。