无头:
#include<bits/stdc++.h>
using namespace std;
typedef struct Node
{
int data;
struct Node * next;
}*node;
struct Node* createNode(int data)
{
struct Node*newNode = (struct Node*)malloc(sizeof(struct Node));
newNode->next = NULL;
newNode->data = data;
return newNode;
}
void insertByTail(node list,int data)
{
struct Node*newNode = createNode(data);
struct Node*tailNode = list;
while(tailNode->next != NULL)
{
tailNode = tailNode->next;
}
tailNode->next = newNode;
}
void printList(node list)
{
node i = list;
for(; i != NULL; i = i->next)
{
printf("%d ", i->data);
}
puts("");
}
void INSERT(node list, int e, int a)
{
node i = list;
for(int j = 1; i != NULL; i = i->next, j ++ )
{
if(j == a - 1)
break;
}
if(i == NULL) printf("超出链表长度\n");
else
{
struct Node*newNode = createNode(e);
newNode->next = i->next;
i->next = newNode;
}
}
int main()
{
node list;
int i;
printf("输入链表的数据:\n");
int cnt = 0;
while(cin >> i)
{
cnt ++ ;
if(cnt == 1)
list = createNode(i);
else
insertByTail(list, i);
if(cin.get() == '\n')
break;
}
printf("插入前链表为:\n");
printList(list);
int e, a;
printf("输入插入数据和位置:\n");
cin >> e >> a;
INSERT(list, e, a);
printf("插入后链表为:\n");
printList(list);
return 0;
}
有头:
#include<bits/stdc++.h>
using namespace std;
typedef struct Node
{
int data;
struct Node * next;
}*node;
struct Node* createlist()
{
struct Node*headNode = (struct Node*)malloc(sizeof(struct Node));
headNode->next = NULL;
headNode->data = NULL;
return headNode;
}
struct Node* createNode(int data)
{
struct Node*newNode = (struct Node*)malloc(sizeof(struct Node));
newNode->next = NULL;
newNode->data = data;
return newNode;
}
void insertByTail(struct Node*headNode,int data)
{
struct Node*newNode = createNode(data);
struct Node*tailNode = headNode;
while(tailNode->next != NULL)
{
tailNode = tailNode->next;
}
tailNode->next = newNode;
}
void printList(node list)
{
node i = list->next;
for(; i != NULL; i = i->next)
{
printf("%d ", i->data);
}
puts("");
}
void INSERT(node list, int e, int a)
{
node i = list->next;
for(int j = 1; i != NULL; i = i->next, j ++ )
{
if(j == a - 1)
break;
}
if(i == NULL) printf("超出链表长度\n");
else
{
struct Node*newNode = createNode(e);
newNode->next = i->next;
i->next = newNode;
}
}
int main()
{
node list = createlist();
int i;
printf("输入链表的数据:\n");
while(cin >> i)
{
insertByTail(list, i);
if(cin.get() == '\n')
break;
}
printf("插入前链表为:\n");
printList(list);
int e, a;
printf("输入插入数据和位置:\n");
cin >> e >> a;
INSERT(list, e, a);
printf("插入后链表为:\n");
printList(list);
return 0;
}
balabalabalabalabalabalabala