typedef struct node {
DataType data
struct node *next
}*LinkList,*pNode
/**********************************************/
/* 参数:head 链表的头结点,x待插入的结点数据 */
/**********************************************/
void InsertNode(LinkList head,DataType x) {
pNode q,p = (pNode)malloc(sizeof(struct node))// 创建新结点
p->data = x
q = head
while(q->next) {
if(x <= q->next->data) { // 插在表中,或头结点后
p->next = q->next
q->next = p
return
}
q = q->next
}
q->next = p// 插在表尾
p->next = NULL
}
//在值为val的结点前插入dataListNode *insertList(ListNode *head, int val, int data)
{
if (head == NULL)
return NULL
ListNode *pCur = head
ListNode *insertData = (ListNode *)malloc(sizeof(ListNode))
insertData->data = data
while(pCur->next != head)
{
if(pCur->next->data == val)
{
insertData->next = pCur->next
pCur->next = insertData
return head
}
pCur = pCur->next
}
if (head->data == val) {
insertData->next = pCur->next
pCur->next = insertData
return insertData
}
free(insertData)
return NULL
}
#include<iostream>using namespace std
class Node {
public:
int data
Node* next
Node(int _data) {
data = _data
next = NULL
}
}
class LinkList {
private:
Node* head
public:
LinkList() {
head = NULL
}
void insert(Node *node, int index) {
if (head == NULL) {
head = node
return
}
if (index == 0) {
node->next = head
head = node
return
}
Node *current_node = head
int count = 0
while (current_node->next != NULL && count < index - 1) {
current_node = current_node->next
count++
}
if (count == index - 1) {
node->next = current_node->next
current_node->next = node
}
}
void output() {
if (head == NULL) {
return
}
Node *current_node = head
while (current_node != NULL) {
cout << current_node->data << " "
current_node = current_node->next
}
cout << endl
}
void delete_node(int index) {
if (head == NULL) {
return
}
Node *current_node = head
int count = 0
if (index == 0) {
head = head->next
delete current_node
return
}
while (current_node->next != NULL && count < index -1) {
current_node = current_node->next
count++
}
if (count == index - 1 && current_node->next != NULL) {
Node *delete_node = current_node->next
current_node->next = delete_node->next
delete delete_node
}
}
void reverse(){
if(head == NULL){
return
}
Node *next_node,*current_node
current_node = head->next
head->next = NULL
while(current_node != NULL){
next_node = current_node->next
current_node->next = head
head = current_node
current_node = next_node
}
}
}
int main() {
LinkList linklist
for (int i = 1 i <= 10 i++) {
Node *node = new Node(i)
linklist.insert(node, i - 1)
}
linklist.output()
linklist.delete_node(3)
linklist.output()
linklist.reverse()
linklist.output()
return 0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)